Укажите учетные данные BigQuery в Apache - конвейер луча, закодированный в python - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь прочитать данные из больших запросов в моем конвейере лучей, используя облачный обработчик потока данных. Я хочу предоставить учетные данные для доступа к проекту.

Я видел примеры в 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 ...

Есть идеи?

1 Ответ

1 голос
/ 23 апреля 2020

--service_account_email - рекомендуемый подход, как упомянуто здесь . Загрузка ключа и его хранение локально или в GCE не рекомендуется.

...