我正在运行一个流数据流作业,从无界的 PCollection 接收事件。 我想将无界 PCollection 与有界 PCollection 结合在一起。
有界 PCollection 的内容是来自查询的元素结果集,我希望每天刷新它。
如何在不中断/重新启动流作业的情况下强制刷新有界 PCollection?
目前重新启动流作业看起来是最简单的解决方案,但也看起来有点脏
我假设您想通过查询表从 BigQuery 获取一些数据。 您可以通过使用周期性脉冲变换来做到这一点,如下所示:
def to_bqrequest(self, elem, sql):
from apache_beam.io import ReadFromBigQueryRequest
yield ReadFromBigQueryRequest(query=sql)
(
inputs
| PeriodicImpulse(fire_interval=60*60*24,apply_windowing=False)
| "ApplyGlobalWindow" >> WindowInto(window.GlobalWindows())
| "To BQ Request" >> ParDo(self.to_bqrequest, sql=self.sql)
| ReadAllFromBigQuery()
)
以下是有关它的更多信息: https://beam.apache.org/documentation/patterns/side-inputs/