Apache Flink:在并行任务之间对齐水印

时间:2016-03-24 07:59:40

标签: java streaming apache-flink

我们正在使用带有水印的周期性事件时间窗口。我们目前在Flink App中有4个并行任务。

在流媒体处理过程中,所有4个任务的水印值必须接近触发窗口事件。

  

例如;

     

任务1水印值= 8

     

任务2水印值= 1

     

任务3水印值= 8

     

任务4水印值= 8

任务2正在等待日志更新其水印。但是,条件可以在任务2更新之前发生,我们希望在它之前触发窗口事件。

是否有任何机制可以在不等待其他任务的情况下对齐所有并行任务的水印或触发窗口事件?

1 个答案:

答案 0 :(得分:0)

@Til Rohrmann 在评论中已经回答了这个问题,主要回答:

<块引用>

如果您要查找同一个人的 3 个发件人,那么您 应该keyBy这个人,然后简单地使用一个计数窗口来 生成警报。也许您还想过滤掉重复的发件人 为同一个人。

后续问题:

<块引用>

但我们还需要考虑事件时间。例如 3 个发件人 10 分钟(事件时间不是处理时间)

后续回答:

<块引用>

然后您可以使用带有自定义触发器的事件时间窗口 当它看到 3 个元素时触发。

我认为关键的结论是: 如果你想触发一些东西的计数,keyBy那个字段。