如何从 GCS 中的文件中自动检测架构并加载到 BigQuery?



我正在尝试将文件从GCS加载到BigQuery,其架构是从GCS中的文件自动生成的。我正在使用Apache Airflow来做同样的事情,我遇到的问题是,当我使用文件中的自动检测模式时,BigQuery会根据一些~100个初始值创建模式。

例如,在我的例子中,有一列说XX中的值大多是Integer类型,但也有一些值是String类型,所以bq load会因架构不匹配而失败,在这种情况下我们需要将数据类型更改为STRING

所以我可以做的是通过自己生成架构来手动创建一个新表。或者我可以将max_bad_record值设置为某些50,但这似乎不是一个好的解决方案。理想的解决方案是这样的:

  • 尝试将文件从GCS加载到BigQuery,如果表是在BQ中成功创建的,没有任何数据不匹配,那么我不需要做任何事情。
  • 否则,我需要能够动态更新架构并完成表创建。

由于您无法在 bq 中更改列类型(请参阅此链接(

BigQuery 原生支持以下架构修改:

BigQuery 本机支持以下架构修改:
* 向架构定义
添加列* 将列的模式从"必需"放宽到"可为空

"不支持所有其他架构修改,需要手动解决方法

因此,作为解决方法,我建议:

  • 在脚本中使用--max_rows_per_request = 1
  • 使用最适合您的情况的 1 行,并具有优化的字段类型。

这将创建具有正确架构和 1 行的表,您可以从那里加载其余数据。

最新更新