3

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

问题:Beam 中的 BigQury IO 使用 com.google.api.services.bigquery.model 下的 TableFieldSchema 和 TableSchema 类来表示 BigQuery 字段和架构,而 BigQuery 客户端库使用 com.google.cloud.bigquerypackage 下的 TableDefinition 来表示相同的东西,所以字段和模式定义不能在一个地方定义并在另一个地方重复使用。

有没有办法在一个地方定义架构并重新使用它?

谢谢,索比

ps 我们在 Beam 中使用 Java SDK

4

1 回答 1

1

此处提出了类似的问题。

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

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

我推到那里的代码是 WIP,还没有用于生产或其他任何东西,但我希望它能给你一个正确的方向。

于 2017-06-09T09:08:24.563 回答