首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用Python语言编写的Apache-Beam管道中提供BigQuery凭据

在使用Python语言编写的Apache-Beam管道中提供BigQuery凭据
EN

Stack Overflow用户
提问于 2020-04-24 01:25:00
回答 2查看 1.1K关注 0票数 1

我正在尝试使用cloud dataflow runner从我的beam管道中读取bigquery中的数据。我想提供一个凭证来访问该项目。

我在Java中见过示例,但在Python中没有见过。

我发现唯一的可能性是使用:--service_account_email参数,但如果我想在所有选项中的代码中给出.json键信息怎么办: google_cloud_options.service_account = '/path/ to /credential.json‘

代码语言:javascript
复制
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中找不到...

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-24 02:05:51

正如前面提到的here--service_account_email是推荐的方法。不建议下载密钥并将其存储在本地或GCE上。

票数 2
EN

Stack Overflow用户

发布于 2020-05-14 04:12:13

对于需要在代码中为json文件使用不同路径的情况,您可以尝试以下python Authentication解决方法:

代码语言:javascript
复制
client = Client.from_service_account_json('/path/to/keyfile.json')

代码语言:javascript
复制
client = Client(credentials=credentials)

Here是一个从文件创建自定义凭据的示例:

代码语言:javascript
复制
credentials = service_account.Credentials.from_service_account_file(
    key_path,
    scopes=["https://www.googleapis.com/auth/cloud-platform"],
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61393299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档