推断 BigQuery 表加载的 avro 架构

Posted

技术标签:

【中文标题】推断 BigQuery 表加载的 avro 架构【英文标题】:infer avro schema for BigQuery table load 【发布时间】:2018-08-23 14:26:26 【问题描述】:

我正在使用 java api,尝试将数据从 avro 文件加载到 BigQuery。 创建外部表时,BigQuery 会自动从 .avro 文件中检测架构。 在为要加载的数据创建常规 BigQuery 表时,是否可以在 GCS 中指定架构/数据文件?

提前谢谢你

【问题讨论】:

【参考方案1】:

您可以使用configuration.load.schema 创建manually the schema definition,但是,文档说:

当您加载 Avro、Parquet、ORC、Cloud Firestore 导出数据或 Cloud Datastore 导出数据时,BigQuery 会根据源数据推断架构。

【讨论】:

没错,BigQuery 会自动从 alphabetally last 文件中获取架构。因此,如果您有 filea.avro(带有字段 a 和 b)和 fileb.avro(带有字段 a 和 c),您正在加载一个加载作业 - BigQuery 将从两个文件中加载字段 a 和 c(在这种情况下,c 将对于 filea 中的行为 null)。此外,您可以指定一个模式,如 F10 所说,例如,如果您不想加载文件中的每一列,这可能会有所帮助。【参考方案2】:

似乎问题在于该表已经存在,而我没有指定 CreateDisposition.CREATE_IF_NEEDED。 您根本不需要指定架构,就像外部表一样

【讨论】:

以上是关于推断 BigQuery 表加载的 avro 架构的主要内容,如果未能解决你的问题,请参考以下文章

BIgQuery AVRO 外部表架构

从 AVRO 加载到 BigQuery - 在目标表中指定十进制类型

如何从具有 DATE 列的 BigQuery 表中导出 AVRO 文件并将其再次加载到 BigQuery

将 avro 十进制数据加载到 BigQuery 中?

将列动态添加到现有 BigQuery 表

BigQuery 无法解析 avro 架构文件