簡體   English   中英

在 python 編碼的 Apache-Beam 管道中提供 BigQuery 憑證

[英]Provide BigQuery credentials in Apache-Beam pipeline coded in python

我正在嘗試使用雲數據流運行器從我的光束管道中的 bigquery 讀取數據。 我想提供訪問該項目的憑據。

我在 Java 中看到了示例,但在 Python 中沒有看到。

我發現的唯一可能性是使用: --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這里提到的推薦方法。 不建議下載密鑰並將其存儲在本地或 GCE 上。

對於需要在代碼中為 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"],
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM