在从 Dataflow 流式传输到 BigQuery 时处理架构中的更改
Handle changes in schema while streaming from Dataflow to BigQury
我有一个要求,即在从 PubSub 流式传输到 BigQuery 时,我应该能够在运行时修改 BigQuery 架构。我浏览了几个链接,例如:
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 架构步骤。
我有一个要求,即在从 PubSub 流式传输到 BigQuery 时,我应该能够在运行时修改 BigQuery 架构。我浏览了几个链接,例如:
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 架构步骤。