关于序列化:使用 Beam 将 Avro 写入 BigQuery

Writing Avro to BigQuery using Beam

Q1:假设我使用 BigQuery 加载工具加载 Avro 编码数据。现在我需要将这些数据以 Avro 格式写入不同的表。我正在尝试测试不同的分区以测试表性能。如何使用 Beam 将 SchemaAndRecord 写回 BigQuery?在这种情况下,模式检测也能工作吗?

Q2:从 Avro 架构类型转换为 BigQuery 架构类型时,架构信息似乎丢失了。例如 double 和 float Avro 类型在 BigQuery 中都转换为 FLOAT 类型。这是预期的吗?


Q1:如果表已经存在并且架构与您复制的表匹配,您应该能够使用 CREATE_NEVER CreateDisposition (https://cloud.google.com/dataflow/model/bigquery-io#writing- to-bigquery) 并直接从原始表的 readTableRows() 的输出中写入 TableRows。虽然我建议改用 BigQuery 的 TableCopy 命令。

Q2:这是意料之中的,BigQuery 没有 Double 类型。您可以在此处找到有关类型映射的更多信息:https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-avro#avro_conversions。也将很快支持逻辑类型:https://issuetracker.google.com/issues/35905894。