推断 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 架构的主要内容,如果未能解决你的问题,请参考以下文章
从 AVRO 加载到 BigQuery - 在目标表中指定十进制类型