在Apache-Beam管道中提供用python编码的BigQuery证书。

问题描述 投票:0回答:1

我正试图在我的beam管道中使用云数据流运行器从bigquery中读取数据.我想提供一个凭证来访问项目。

我在Java中看到过例子,但在Python中没有。

我发现的唯一可能性是使用.service_account_email来访问项目。--服务_账号_邮件 argument但是如果我想在代码本身的所有选项中给出.json键信息,比如:google_cloud_options.service_account = 'pathtocredential.json'怎么办?

options = PipelineOptions(flags=argv)
google_cloud_options = options.view_as(GoogleCloudOptions)
google_cloud_options.project = 'project_name'
google_cloud_options.job_name = 'job_name'
google_cloud_options.staging_location = 'gs://bucket'
google_cloud_options.temp_location = 'gs://bucket'
options.view_as(StandardOptions).runner = 'DataflowRunner'

with beam.Pipeline(options=options) as pipeline:
    query = open('query.sql', 'r')
    bq_source = beam.io.BigQuerySource(query=query.read(), use_standard_sql=True)
    main_table = \
        pipeline \
        | 'ReadAccountViewAll' >> beam.io.Read(bq_source) \

Java有一个方法 getGcpCredential 但在Python中找不到一个...。

任何想法?

python google-cloud-dataflow apache-beam apache-beam-pipeline
1个回答
1
投票

--service_account_email 是建议的方法,如前所述 此处 . 不建议下载密钥并存储在本地或GCE上。


0
投票

如果需要在代码中为json文件使用不同的路径,你可以尝试以下方法。python认证 变通办法。

client = Client.from_service_account_json('/path/to/keyfile.json')

client = Client(credentials=credentials)

是一个从文件创建自定义凭证的例子。

credentials = service_account.Credentials.from_service_account_file(
    key_path,
    scopes=["https://www.googleapis.com/auth/cloud-platform"],
)
© www.soinside.com 2019 - 2024. All rights reserved.