gpt4 book ai didi

google-bigquery - 在 BigQuery 客户端库和 Beam IO 之间共享架构定义

转载 作者:行者123 更新时间:2023-12-02 17:47:39 31 4
gpt4 key购买 nike

背景:我们使用 Beam 2.0 中的云数据流运行器将数据 ETL 到 BigQuery 中的仓库。我们希望使用 BigQuery 客户端库(测试版)在梁管道用数据填充数据仓库之前创建数据仓库的架构。 (原因:完全控制表定义,例如分区,易于创建DW实例,即数据集,ETL逻辑与DW设计的分离以及代码模块化)

问题:Beam 中的 BigQury IO 使用 com.google.api.services.bigquery.model 下的 TableFieldSchema 和 TableSchema 类来表示 BigQuery 字段和架构,而 BigQuery 客户端库使用 com.google.cloud.bigquerypackage 下的 TableDefinition 来表示相同的内容,因此字段和架构定义不能在一处定义并在另一处重复使用。

有没有一种方法可以在一个地方定义架构并重复使用它?

谢谢,索比

附:我们在 Beam 中使用 Java SDK

最佳答案

提出了类似的问题here .

我写了一些实用程序并将它们发布在GitHub上您可能对此感兴趣。

ParseToProtoBuffer.py 从 BigQuery 下载架构并将其解析为 Protobuf schema(您可能还想研究 Protobuffers 以提高管道性能)。如果将其编译为 Java 类,并在项目中使用它,则可以使用 ProtobufUtils.java 中的 makeTableSchema 函数来获取该类的 TableSchema。如果您决定使用 Protobuffers 开发管道,您可能也想使用 makeTableRow

我在那里推送的代码是 WIP,尚未用于生产或任何其他用途,但我希望它能插入您朝着正确的方向前进。

关于google-bigquery - 在 BigQuery 客户端库和 Beam IO 之间共享架构定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44451509/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com