【问题标题】:Stream-insert and afterwards periodically merge into BigQuery within Dataflow pipeline [closed]流插入,然后定期合并到 Dataflow 管道中的 BigQuery [关闭]
【发布时间】:2026-01-30 00:30:01
【问题描述】:

在构建旨在将 BigQuery 中每个键的最新数据存储到的数据流管道时,这是一种有效的方法

  1. 将事件流式插入到分区临时表中
  2. 定期合并(更新/插入)到目标表中,(这样只有键的最新数据才会存储在该表中)。要求每 2-5 分钟进行一次合并,并考虑暂存表中的所有行。

这种方法的想法取自谷歌项目https://github.com/GoogleCloudPlatform/DataflowTemplates, com.google.cloud.teleport.v2.templates.DataStreamToBigQuery

到目前为止,它在我们的测试中运行良好,这里的问题源于 Google 在其文档中声明的事实:

“最近使用流式传输(tabledata.insertall 方法或 Storage Write API)写入表的行无法使用 UPDATE、DELETE 或 MERGE 语句进行修改。” https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language#limitations

有人在生产数据流管道中走这条路并获得稳定的积极结果吗?

【问题讨论】:

    标签: google-bigquery google-cloud-dataflow apache-beam


    【解决方案1】:

    经过几个小时和一些思考,我想我可以回答我自己的问题:由于我只流到临时表并合并到目标表中,因此该方法非常好。

    【讨论】:

      【解决方案2】:

      我昨天做了这个,时间延迟大约是 15-45 分钟。如果您有摄取时间列/字段,您可以使用它来限制您是 UPDATEing 的行。

      【讨论】: