气流-将镶木地板表加载到BigQuery中

时间:2019-10-15 05:25:27

标签: google-bigquery google-cloud-storage airflow parquet

我需要建议!

我正在尝试使用Apache Airflow GoogleCloudStorageToBigQueryOperator将Google Cloud Storage中的拼花文件加载到BigQuery中。

我的代码是:

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或自动检测设置之一。

有任何线索吗?

3 个答案:

答案 0 :(得分:2)

此错误已通过PR

在Airflow v1.10.5中修复。

由于the logic in the gcs_to_bq operator的schema_object为None,schema_fields为None,并且自动检测的默认值为False,因此它将始终抛出该异常。

如果您不想将Airflow升级到1.10.5,则设置 autodetect = True 是解决方法。

答案 1 :(得分:0)

我相信这是因为您的处理方式设置为create_disposition="CREATE_IF_NEEDED"

您可以尝试设置autodetect = True或将处置方式更改为CREATE_NEVER。如果将autodetect设置为True,则从镶木地板文件中推断出模式,并且如果将处置更改为CREATE_NEVER,则从Bigquery表"datalake-tempo-io:atlassian.transactions"中推断出模式。

让我知道是否有帮助

谢谢, jjayadeep

答案 2 :(得分:0)

根据您的错误描述“异常:('BigQuery作业状态检查失败。最终错误是:%s'”,该问题似乎与作业位置和Bigquery数据集位置有关,就像@RyanTheCoder所提到的那样,应该检查下一个question,这可能会解决您的问题。