在 python 中编码的 Apache-Beam 管道中提供 BigQuery 凭据
Provide BigQuery credentials in Apache-Beam pipeline coded in python
我正在尝试使用云数据流运行器从我的 Beam 管道中的 bigquery 读取数据。
我想提供访问该项目的凭据。
我在 Java 中看到过示例,但在 Python 中看到过示例 none。
我发现的唯一可能是使用 : --service_account_email 参数
但是,如果我想在代码本身的所有选项中提供 .json 关键信息怎么办,例如:
google_cloud_options.service_account = '/path/to/credential.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...
中找不到
有什么想法吗?
--service_account_email
是所提到的推荐方法 here 。不建议下载密钥并将其存储在本地或 GCE 上。
对于需要在代码中为 json 文件使用不同路径的情况,您可以尝试以下 python Authentication 解决方法:
client = Client.from_service_account_json('/path/to/keyfile.json')
或
client = Client(credentials=credentials)
Here 是从文件创建自定义凭据的示例:
credentials = service_account.Credentials.from_service_account_file(
key_path,
scopes=["https://www.googleapis.com/auth/cloud-platform"],
)
我正在尝试使用云数据流运行器从我的 Beam 管道中的 bigquery 读取数据。 我想提供访问该项目的凭据。
我在 Java 中看到过示例,但在 Python 中看到过示例 none。
我发现的唯一可能是使用 : --service_account_email 参数 但是,如果我想在代码本身的所有选项中提供 .json 关键信息怎么办,例如: google_cloud_options.service_account = '/path/to/credential.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...
中找不到有什么想法吗?
--service_account_email
是所提到的推荐方法 here 。不建议下载密钥并将其存储在本地或 GCE 上。
对于需要在代码中为 json 文件使用不同路径的情况,您可以尝试以下 python Authentication 解决方法:
client = Client.from_service_account_json('/path/to/keyfile.json')
或
client = Client(credentials=credentials)
Here 是从文件创建自定义凭据的示例:
credentials = service_account.Credentials.from_service_account_file(
key_path,
scopes=["https://www.googleapis.com/auth/cloud-platform"],
)