【问题标题】:Airflow - bigquery_to_gcs operator multiple output destinationAirflow - bigquery_to_gcs 运算符多个输出目的地
【发布时间】:2022-01-08 18:52:05
【问题描述】:

我每天都在运行一个运行查询的气流作业,并将其保存到 Big Query 上的一个表中,然后另一个运算符将输出复制到 GCS。

现在,我注意到当文件大小超过 200 MB 时,Airflow 在 GCS 中将其划分为多个文件。这是该操作员的正常行为吗?如果是这样,我们如何覆盖它?

我读到当文件大小超过 1 GB 时,此运算符也会失败

下面是渲染的代码

start = DummyOperator(task_id="start")

output_table = f"test.{DESTINATION_DATASET}.test_{{{{ ts_nodash }}}}"
output_path = f"gs://test/test/{{{{ ts_nodash }}}}"

query = BigQueryOperator(
    task_id=f"test1",
    sql="sql/test.sql",
    use_legacy_sql=False,
    priority="BATCH",
    write_disposition="WRITE_TRUNCATE",
    destination_dataset_table=output_table,
    params={
        "event_dataset": EVENT_DATASET,
        "days_to_query": 30,
    },
    bigquery_conn_id="google_cloud_default",
    labels={"team": "test"},
    dag=dag
)
export_to_gcs = BigQueryToCloudStorageOperator(
    task_id=f"export_to_gcs",
    source_project_dataset_table=output_table,
    destination_cloud_storage_uris=[f"{output_path}/data-*.csv"],
    compression="NONE",
    export_format="CSV",
    bigquery_conn_id="google_cloud_default",
    labels={"team": "test"},
    dag=dag,
)

start >> query >> export_to_gcs

【问题讨论】:

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


    【解决方案1】:

    第一个 BigQueryToCloudStorageOperator 已弃用。你应该使用BigQueryToGCSOperator

    是的,这很正常,并不是真正的 Airflow。这就是 BigQuery 的工作原理。 Airflow 没有添加/更改 BigQuery 的功能。

    特别是在您的情况下,当您在 destination_cloud_storage_uris=[f"{output_path}/data-*.csv"], 中设置多个 URI 时,您要求 BigQuery 生成多个文件

    您可以在 BigQuery 文档 here 中了解 destination_cloud_storage_uris(单个 URI、单个通配符 URI、多个通配符 URI)的不同选项。您还应该知道limitations

    假设您想要输出中的单个文件,只需将您的代码更改为 Single URI

    destination_cloud_storage_uris=[f"{output_path}/data.csv"]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-08
      • 1970-01-01
      • 2019-11-26
      • 2018-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多