Воздушный поток - загрузить паркетный стол в BigQuery - PullRequest
0 голосов
/ 15 октября 2019

Мне нужен совет!

Я пытаюсь загрузить файл партера, расположенный в облачном хранилище Google, в BigQuery с помощью Apache Airflow GoogleCloudStorageToBigQueryOperator.

Мой код:

export_transactions_to_bq_task = GoogleCloudStorageToBigQueryOperator(
        task_id="export_transactions_parquet_to_bq",
        bucket="tempo-io-datalake-delivery",
        source_objects=["bigquery/atlassian/export_transactions.parquet"],
        destination_project_dataset_table="datalake-tempo-io:atlassian.transactions",
        source_format="PARQUET",
        create_disposition="CREATE_IF_NEEDED",
        write_disposition="WRITE_TRUNCATE",
        autodetect=False,
        google_cloud_storage_conn_id="google_cloud_default",
        bigquery_conn_id="bigquery_default",
        dag=export_transactions_dag
        )

Формат паркета не нуждается в какой-либо спецификации схемы, потому что это самоописание (?!), но Airflow выдает ошибку, что необходимо указать один из параметров schema_fields, schema_object или autodetect.

Любые подсказки?

Ответы [ 3 ]

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

Это ошибка, которая была исправлена ​​в Airflow v1.10.5 с этим PR

Поскольку логика в операторе gcs_to_bq имеет schema_object как None,schema_fields как None и значение по умолчанию False для автоопределения, оно всегда будет выдавать это исключение.

Если вы не хотите обновлять свой Airflow до 1.10.5, установите autodetect = True будет обходной путь.

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

В соответствии с описанием ошибки, которое называется «Исключение: (« Проверка состояния задания BigQuery завершилась неудачно. Последняя ошибка:% s »), похоже, проблема связана с расположением задания и местоположением набора данных Bigquery. Как уже упоминалось в @RyanTheCoder, выследует проверить следующий вопрос , и это может решить вашу проблему.

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

Я полагаю, это потому, что вы настроены на create_disposition="CREATE_IF_NEEDED".

Вы можете попробовать установить autodetect = True или изменить расположение на CREATE_NEVER. Если для автоматического определения установлено значение True, тогда схема выводится из файла паркета, а если изменить расположение на CREATE_NEVER, тогда схема выводится из таблицы Bigquery "datalake-tempo-io:atlassian.transactions".

Дайте мне знать, если этопомогает

Спасибо, jjayadeep

...