Невозможно сохранить шаблон потока данных Python в корзину при использовании вызываемого для параметра таблицы WriteToBigQuery - PullRequest
1 голос
/ 17 октября 2019

Ошибка в вопросе:

AttributeError: 'function' object has no attribute 'tableId'

Код в вопросе:

def get_table_spec(row: Dict[str, str]):
    data = json.loads(opts.data.get())
    network = data['network']
    gco = opts.view_as(GoogleCloudOptions)
    project = gco.project

    return f'{gco.project}:reports.{network}'

result = rows | 'SaveToBigQueryTable' >> beam.io.WriteToBigQuery(
    table=get_table_spec,
    write_disposition=beam.io.BigQueryDisposition.WRITE_APPEND,
    create_disposition=beam.io.BigQueryDisposition.CREATE_NEVER)

Так что это работает локально, когда я использую DirectRunner. python -m template --runner DirectRunner --otherargs ... Не выдается никаких ошибок, данные сохраняются в моей таблице BigQuery.

Когда я пытаюсь скомпилировать и развернуть шаблон в корзину python -m template --runner DataflowRunner --template_location ... --staging_location etc... Выдает ошибку выше.

Пробовалв версии 2.15 и 2.16 Apache Beam для Python.

1 Ответ

0 голосов
/ 17 октября 2019

Возможность использовать динамические места назначения при записи в BigQuery была представлена ​​в выпуске Python SDK версии 2.12.0. Это связано с новым BigQuery приемником , который помечен как экспериментальный.

Чтобы использовать его с DataflowRunner в последних SDK, вы можете добавить этот флаг в команду python:

--experiments use_beam_bq_sink
...