在apache flink中居中的时间窗口

qlzsbp2j  于 2021-06-25  发布在  Flink
关注(0)|答案(1)|浏览(250)

是否可以收集中心是特定事件的窗口?
想象一下一连串的事件:

....e...........e...E........e......

我特别感兴趣的是触发事件e及其周围环境(+-几分钟):

....e..........|e...E....|....e......
q8l4jmvw

q8l4jmvw1#

用flink的窗口操作符实现这个逻辑(包括自定义 Trigger 以及 Evictor 实现)应该是可能的,但在我看来相当具有挑战性。
我认为更好的方法是 ProcessFunction . 一 ProcessFunction 可以注册调用回调函数的计时器(处理时间或事件时间)。对于给定的用例 ProcessFunction 将收集处于托管状态的所有记录。当接收到触发事件时,会注册一个计时器,等待更多事件到达,直到触发事件周围的窗口边界过期。而且 ProcessFunction 需要定期删除所有太早到达而与触发器事件关联的元素。这也可以通过注册计时器来完成。

相关问题