【问题标题】:Writing Avro to BigQuery using Beam使用 Beam 将 Avro 写入 BigQuery
【发布时间】:2018-11-18 02:56:17
【问题描述】:

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

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

【问题讨论】:

    标签: serialization google-cloud-platform google-bigquery avro apache-beam


    【解决方案1】:

    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

    【讨论】:

    • 一个更快速的问题,是否可以在写入时通过 Beam 定义表分区?最好能够使用适当的选项动态创建表以应用分区。
    • 您可以找到有关写入分区表 herehere 的更多信息。这两个示例都使用 TableDestination 并提供适当的时间戳来指示分区。
    猜你喜欢
    • 2018-12-29
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    • 2021-06-04
    • 2019-03-26
    相关资源
    最近更新 更多