Dataflow:在流作业中刷新有界 PCollection

问题描述 投票:0回答:1

我正在运行一个流数据流作业,从无界的 PCollection 接收事件。 我想将无界 PCollection 与有界 PCollection 结合在一起。

有界 PCollection 的内容是来自查询的元素结果集,我希望每天刷新它。

如何在不中断/重新启动流作业的情况下强制刷新有界 PCollection?

目前重新启动流作业看起来是最简单的解决方案,但也看起来有点脏

google-cloud-dataflow apache-beam
1个回答
0
投票

我假设您想通过查询表从 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/

© www.soinside.com 2019 - 2024. All rights reserved.