是否有 references/samples 以批处理模式使用数据流从 Pub sub 读取数据并写入 BQ

Are there any references/samples to use dataflow in batch mode for reading the data from Pub sub and writing to BQ

我们有一个将数据写入两个 table 的用例,一个 table 有完整记录,另一个 table 只有最新记录和 table 名称也是动态的

示例数据集:

row1: {"table_name": "inv" , "rec": {id:1, name: test, version: v1, createtime: 2022-01-10 11:20:13, updatetetime: 2022 -01-10 11:20:13}}
row2: {"table_name": "inv" , "rec":{id:2, name: test1, version: v1, createtime: 2022-01-11 11:20:13, updatetetime: 2022 -01-11 11:20:13}}
row3: {"table_name": "inv" , "rec":{id:1, name: test, version: v2, createtime: 2022-01-10 11:20:13, updatetetime: 2022 -01-11 11:20:13}}
row4: {"table_name": "inv" , "rec":{id:1, name: test, version: v3, createtime: 2022-01-10 11:20:13, updatetetime: 2022 -01-12 11:20:13}}
row5: {"table_name": "inv" , "rec":{id:1, name: test, version: v4, createtime: 2022-01-10 11:20:13, updatetetime: 2022 -01-13 11:20:13}}
row6: {"table_name": "inv" , "rec":{id:1, name: test, version: v5, createtime: 2022-01-10 11:20:13, updatetetime: 2022 -01-14 11:20:13}}

所以历史table包含了pub-sub的所有记录,而主table只有第2行和第6行,因为它们是基于id的最新记录。

您有一个设计问题:如何批处理,我的意思是通过从无限数据源读取来处理一组数据?

的确,PubSub是一个消息队列产品,没有开始,也没有结束。因此,批处理对那种类型的来源没有意义。您可以按时间 window 处理数据,并批处理 window 中收到的消息,但整个处理始终是流式处理。