流插入,然后定期合并到 Dataflow 管道中的 BigQuery [关闭]
Posted
技术标签:
【中文标题】流插入,然后定期合并到 Dataflow 管道中的 BigQuery [关闭]【英文标题】:Stream-insert and afterwards periodically merge into BigQuery within Dataflow pipeline [closed] 【发布时间】:2021-12-02 11:21:23 【问题描述】:在构建旨在将 BigQuery 中每个键的最新数据存储到的数据流管道时,这是一种有效的方法
-
将事件流式插入到分区临时表中
定期合并(更新/插入)到目标表中,(这样只有键的最新数据才会存储在该表中)。要求每 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
有人在生产数据流管道中走这条路并获得稳定的积极结果吗?
【问题讨论】:
【参考方案1】:经过几个小时和一些思考,我想我可以回答我自己的问题:由于我只流到临时表并合并到目标表中,因此该方法非常好。
【讨论】:
【参考方案2】:我昨天做了这个,时间延迟大约是 15-45 分钟。如果您有摄取时间列/字段,您可以使用它来限制您是 UPDATE
ing 的行。
【讨论】:
以上是关于流插入,然后定期合并到 Dataflow 管道中的 BigQuery [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
数据流:我可以使用批处理作业连续写/流写入BigQuery吗?
到 Cloud Bigtable 的 Google Cloud Dataflow 管道中的异常
来自 Dataflow 的 BigQuery 流式插入 - 没有结果