在从 Dataflow 流式传输到 BigQuery 时处理架构中的更改

Handle changes in schema while streaming from Dataflow to BigQury

我有一个要求,即在从 PubSub 流式传输到 BigQuery 时,我应该能够在运行时修改 BigQuery 架构。我浏览了几个链接,例如:

https://cloud.google.com/blog/products/gcp/how-to-handle-mutating-json-schemas-in-a-streaming-pipeline-with-square-enix

https://medium.com/@bravnic/dataflow-dealing-with-bigquery-schema-change-64936b44ef3

但是,我真的想不出如何在运行时顺利地改变架构。请帮忙解决这个问题。

谢谢。

如果您使用 ParDo 转换写入 BigQuery,这就是我所做的(使用 Python SDK,但同样适用于 Java / Go):

  • 在ParDo变换的setup方法中:
    • 实例化 BQ 客户端以用于 ParDo 实例的其余部分
    • 获取客户​​端的当前模式
    • 生成我的数据的 PyArrow 架构并比较每个字段
    • 向 BQ 架构添加任何必要的字段
  • 在转换的 process 方法中,我正在对 BQ 进行实际插入

我不确定如何使用 Beam 提供的默认 BQ 输出来更新架构。我被迫使用 ParDo 转换进行输出,因为我需要能够输出到不同的 BQ 表,而侧面输出与我的用例不匹配。使用 Dataflow runner 的性能非常好。

根据您的用例,可能不需要 PyArrow 架构步骤。