我需要建议!
我正在尝试使用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或自动检测设置之一。
有任何线索吗?
答案 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,这可能会解决您的问题。