如何设置一个数据流 window 在所有记录都写入 bigquery 后会不断重新触发更多数据?

How do I set a dataflow window that will continually retrigger for more data after all records have been written to bigquery?

我们有一个从 pub/sub 读取并写入 bigquery 的流式传输管道。如果不添加 window 函数,它就无法工作,因为默认的全局 window 只触发一次并且不知道何时重新触发。没有 GroupBy 或 combine。

我们尝试添加一个带触发器的光束 Window,但存在一些问题。如果我们使用 globalWindow,它运行起来真的很慢,有时会出现空指针异常。如果我们使用固定的 window,速度很快,但有时似乎无法确认 pub/sub 消息。

我们真正想要的是一个从 pub/sub 读取的管道,获取一批(无论它能获取多少),写入 bigquery,一旦所有内容都写入并且 pubsub 消息得到确认,重新触发从发布订阅中读取。这可能吗?

我认为您正在寻找 this。您有一个名为 Repeatedly.forever 的复合触发器,您可以将它与 AfterCount

结合使用

读取 1000 个元素后触发类似这样的事情。

Repeatedly.forever(AfterCount(1000))