【问题标题】:Bigquery data transfer failing if target table is not daily-partitioned如果目标表不是每日分区的,Bigquery 数据传输失败
【发布时间】:2021-02-23 05:34:12
【问题描述】:

我有一个 Bigquery 数据传输作业设置到按月分区的目标表。该表已使用以下命令创建:

bq mk --table \                                                                              
  --schema schema.json \
  --time_partitioning_field createdAt \
  --time_partitioning_type MONTH \
  myproject:mydataset.MyTable

已使用 Python BQDTS 客户端创建了数据传输作业,如下所示:

parent = f"projects/myproject/locations/{location}"
baseparams = {
    "file_format": "CSV",
    "ignore_unknown_values": True,
    "field_delimiter": ",",
    "skip_leading_rows": "0",
    "allow_jagged_rows": True,
}
params = Struct()
params_content = baseparams.copy()
params_content[
    "data_path_template"
] = f"gs://mybucket/**/*.csv"
params_content["destination_table_name_template"] = "MyTable"

params.update(params_content)
tc_dict = {
    "display_name": target_display_name,
    "destination_dataset_id": "mydataset",
    "data_source_id": "google_cloud_storage",
    "schedule": "every 24 hours",
    "params": params,
}
tc = bigquery_datatransfer_v1.types.TransferConfig(**tc_dict)
response = client.create_transfer_config(
    request={"parent": parent, "transfer_config": tc}
)

如您所见,作业定义中没有指定分区,仅在数据库表中指定,应该按照documentation

分区选项 Cloud Storage 和 Amazon S3 传输可以写入分区或非分区目标表。 BigQuery 中有两种类型的表分区:

分区表:基于列分区的表。列类型必须是 TIMESTAMP 或 DATE 列。 如果目标表按列分区,则在创建目标表并指定其架构时标识分区列。

此作业已经成功运行了几天,直到上周(最后一次成功运行于 2020 年 11 月 4 日)。今晚(2020-11-10),作业失败并显示以下错误消息:

不兼容的表分区规范。目标表存在分区规范interval(type:MONTH,field:createdAt),但传输目标分区规范是interval(type:DAY,field:createdAt)。请在更新目标表或传输分区规范后重试。

我尝试使用这种规范重新创建表和作业,但每次目标表分区类型为 MONTH 时它确实会失败。但是,如果分区类型是 DAY,这仍然有效。最让我困惑的是“传输分区规范”作为这样一个参数的消息,它似乎在文档中不存在。

这是 GCP 中最近发生的 API 重大变化,尚未记录在案吗?

【问题讨论】:

  • 我建议您在GCP issue tracker 提出问题,因为这似乎不是正常行为
  • 我做到了,GCP 支持团队正在努力解决这个问题。我会在解决这个问题时更新它
  • 以下是来自 Google 支持的回复:“关于“不兼容的分区”错误,BigQuery 工程团队已经发现了这个问题,他们正在努力修复。该团队估计此修复可能会在12 月的第一周结束。”

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


【解决方案1】:

经过 GCP 团队几周的排查和 bug 修复,问题自 2020 年 12 月 7 日起已得到解决。确实是 Big Query Transfer 服务的 bug。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多