数据流作业的初始状态
Initial state for a dataflow job
我想弄清楚我们如何 "seed" 我们的一些流式数据流作业的 window 状态。场景是我们有一个论坛消息流,我们想一直为每个主题发出 运行ning 条消息,所以我们有一个带有全局 window 的流式数据流作业和触发发出每次都有一个主题的记录进来。到目前为止一切都很好。但是在流源之前,我们有一个大文件,我们想处理它以获得我们的历史计数,而且,因为主题永远存在,我们需要历史计数来通知流源的输出,所以我们输入'我们需要相同的逻辑来 运行 遍历文件,然后在文件耗尽时开始 运行 遍历流源,同时保持 window 状态。
目前的想法:
- 编写一个自定义的无界源来实现这一点。读取文件直到它耗尽,然后开始从流中读取。没什么意思,因为编写自定义源代码没什么意思。
- 运行 逻辑以批处理模式处理文件,作为最后一步,以某种方式将状态发送到流接收器,然后启动流式版本的逻辑,从状态流中读取和数据流,并以某种方式将两者结合起来。这似乎有一定道理,但不确定如何确保流作业在从数据流读取之前从状态源读取所有内容以进行初始化。
- 将历史数据通过管道传输到一个流中,编写一个从两个流中读取的作业。与第二个解决方案相同的问题,不确定如何确保第一个流是 "consumed"。
编辑:最新的选择,也是我们要做的,是编写计算作业,这样事件到达的顺序根本无关紧要,所以我们只需将存档推送到pub/sub 主题,一切都会奏效。这在这种情况下有效,但显然它会影响下游消费者(需要支持更新或撤回)所以我很想知道人们还有哪些其他解决方案来播种他们的 window 状态。
您可以按照要点 2 中的建议进行操作 --- 运行 两个管道(在同一主管道中),第一个从大文件填充 pubsub 主题。这类似于 StreamingWordExtract 示例所做的。
我想弄清楚我们如何 "seed" 我们的一些流式数据流作业的 window 状态。场景是我们有一个论坛消息流,我们想一直为每个主题发出 运行ning 条消息,所以我们有一个带有全局 window 的流式数据流作业和触发发出每次都有一个主题的记录进来。到目前为止一切都很好。但是在流源之前,我们有一个大文件,我们想处理它以获得我们的历史计数,而且,因为主题永远存在,我们需要历史计数来通知流源的输出,所以我们输入'我们需要相同的逻辑来 运行 遍历文件,然后在文件耗尽时开始 运行 遍历流源,同时保持 window 状态。
目前的想法:
- 编写一个自定义的无界源来实现这一点。读取文件直到它耗尽,然后开始从流中读取。没什么意思,因为编写自定义源代码没什么意思。
- 运行 逻辑以批处理模式处理文件,作为最后一步,以某种方式将状态发送到流接收器,然后启动流式版本的逻辑,从状态流中读取和数据流,并以某种方式将两者结合起来。这似乎有一定道理,但不确定如何确保流作业在从数据流读取之前从状态源读取所有内容以进行初始化。
- 将历史数据通过管道传输到一个流中,编写一个从两个流中读取的作业。与第二个解决方案相同的问题,不确定如何确保第一个流是 "consumed"。
编辑:最新的选择,也是我们要做的,是编写计算作业,这样事件到达的顺序根本无关紧要,所以我们只需将存档推送到pub/sub 主题,一切都会奏效。这在这种情况下有效,但显然它会影响下游消费者(需要支持更新或撤回)所以我很想知道人们还有哪些其他解决方案来播种他们的 window 状态。
您可以按照要点 2 中的建议进行操作 --- 运行 两个管道(在同一主管道中),第一个从大文件填充 pubsub 主题。这类似于 StreamingWordExtract 示例所做的。