java - BigQueryIO 读取获取 TableSchema

标签 java google-bigquery google-cloud-dataflow

我想做的是读取一个现有表并生成一个新表,该表具有与原始表相同的架构以及一些额外的列(从原始表的某些列计算得出)。可以在不通知我的情况下增加原始表架构(我在数据流作业中使用的字段不会更改),因此我希望始终读取架构而不是定义一些包含架构的自定义类。

在 Dataflow SDK 1.x 中,我可以通过以下方式获取 TableSchema

final DataflowPipelineOptions options = ...
final String projectId = ...
final String dataset = ...
final String table = ...

final TableSchema schema = new BigQueryServicesImpl()
    .getDatasetService(options)
    .getTable(projectId, dataset, table)
    .getSchema();

对于 Dataflow SDK 2.x,BigQueryServicesImpl 已成为包私有(private)类。

我阅读了 Get TableSchema from BigQuery result PCollection<TableRow> 中的回复但我不想对 BigQuery 进行单独的查询。由于该响应现在已经快 2 年了,SO 社区是否还有其他想法或想法?

最佳答案

由于 BigQueryI/O 现在的设置方式。它需要在管道开始运行之前查询表模式。这是一个很好的功能想法,但在单个管道中不可行。在您链接的示例中,表架构是运行管道之前的查询。

如果添加了新列,那么不幸的是必须重新启动新管道。

关于java - BigQueryIO 读取获取 TableSchema,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50242240/

相关文章:

java - 运行 .jar 文件 - 双击与命令行执行

java - 无法将 Object 或 instanceof 转换为 true 到 IProject || Java Eclipse 插件开发

sql - 大查询 : How to represent integer of type Long in Bigquery?

google-bigquery - 使用bigquery运算符设置 Airflow

java - 处理 'The EJB does not exist' 或 'Cannot load from BACKUPSTORE FOR Key'

java - FileObserver 服务与 UploadToImgur AsyncTask 结合使用 : service stops working after a while (NullPointer), Imgur 未返回正确的响应

google-bigquery - 如何使用 GROUP_CONCAT 和/或 NEST 但限制结果中的元素数量

python - 数据流 Python SDK Avro 源/同步

java - 在 Google DataFlow 中创建复杂的 BigQuery 架构 (java)

java - 从 PubSubIO 读取 : fromTopic vs fromSubscription