首页 > 解决方案 > 如何在 GoogleCloudStorageToBigQueryOperator 的气流作业中设置 useAvroLogicalTypes?

问题描述

我想在不指定架构的情况下将 avro 文件加载到 BQ,因为 BQ 会对 avro 文件进行自动架构检测。但是,它不会选择逻辑类型并将其转换为整数。我看到一个 PR 合并在 Airflow BQ 挂钩中,但我不知道如何在我的工作中启用它。我需要在这里添加一个参数吗?

load_transformed_data = GoogleCloudStorageToBigQueryOperator(
    task_id="gcs_to_bq",
    bucket="mybucket",
    source_objects=["myfile.avro"], 
    destination_project_dataset_table="dataset.test_schema_object", 
    source_format="avro",
    write_disposition="WRITE_APPEND",
    dag=dag,
)

标签: avroairflow

解决方案


您可以通过src_fmt_configs参数将其传递给 GoogleCloudStorageToBigQueryOperator ,其值是一个字典,例如: {'useAvroLogicalTypes': True}

您的代码将是:

load_transformed_data = GoogleCloudStorageToBigQueryOperator(
  task_id="gcs_to_bq",
  bucket="mybucket",
  source_objects=["myfile.avro"], 
  destination_project_dataset_table="dataset.test_schema_object", 
  source_format="avro",
  write_disposition="WRITE_APPEND",
  src_fmt_configs={'useAvroLogicalTypes': True},
  dag=dag,
)

推荐阅读