【发布时间】:2020-07-15 11:45:06
【问题描述】:
我正在尝试使用 bigquery 导出功能以 json 格式将数据推送到 GCS。 在该过程结束时,为了验证 GCS 文件中导出记录的计数,我正在创建一个具有自动模式检测功能的外部表,只是为了计算导出的 GCS 文件中的记录数。
这适用于单个导出的文件。但是对于大于 1gb 的表,我使用通配符来分割成多个文件。这会导致多个文件同时创建了一些空文件。
查询外部表时,空文件导致错误:“400 Schema has no fields”。
请向以下人员提出任何想法:
- 确保在多文件方案的导出操作中不会创建空文件
- 在创建外部表时忽略空文件。
- 导出操作后在 GCS 中计算记录的任何其他方式
【问题讨论】:
-
奇怪的是BQ会创建空文件。就我而言,每次我尝试使用大于 5GB 的表时它都有效。创建的所有文件至少包含超过 35MB。你是怎么做出口的?您是否从 UI 尝试过?有没有可能您已经在该存储桶上创建了一些文件,而这些文件与新文件混淆了?
-
我正在使用 python 库进行导出。我也尝试过使用 UI 导出,行为是相同的。创建多个空文件以及拆分文件(小于 1 gb)
-
看起来 bq 导出的现有行为也会生成一些空文件。我找到了解决我的问题的方法,方法是为外部表设置架构而不是使用自动架构检测,然后即使存在空文件,它也可以工作。
-
@jay12345 您能否分享您的想法和潜在的解决方法,以解决问题的目的,提供有价值的答案,为 Stack 社区做出最大努力?
标签: json google-bigquery export external-tables