是否可以收集中心是特定事件的窗口?想象一下一连串的事件:
....e...........e...E........e......
我特别感兴趣的是触发事件e及其周围环境(+-几分钟):
....e..........|e...E....|....e......
q8l4jmvw1#
用flink的窗口操作符实现这个逻辑(包括自定义 Trigger 以及 Evictor 实现)应该是可能的,但在我看来相当具有挑战性。我认为更好的方法是 ProcessFunction . 一 ProcessFunction 可以注册调用回调函数的计时器(处理时间或事件时间)。对于给定的用例 ProcessFunction 将收集处于托管状态的所有记录。当接收到触发事件时,会注册一个计时器,等待更多事件到达,直到触发事件周围的窗口边界过期。而且 ProcessFunction 需要定期删除所有太早到达而与触发器事件关联的元素。这也可以通过注册计时器来完成。
Trigger
Evictor
ProcessFunction
1条答案
按热度按时间q8l4jmvw1#
用flink的窗口操作符实现这个逻辑(包括自定义
Trigger
以及Evictor
实现)应该是可能的,但在我看来相当具有挑战性。我认为更好的方法是
ProcessFunction
. 一ProcessFunction
可以注册调用回调函数的计时器(处理时间或事件时间)。对于给定的用例ProcessFunction
将收集处于托管状态的所有记录。当接收到触发事件时,会注册一个计时器,等待更多事件到达,直到触发事件周围的窗口边界过期。而且ProcessFunction
需要定期删除所有太早到达而与触发器事件关联的元素。这也可以通过注册计时器来完成。