自定义窗口触发器 Trigger

classic Classic list List threaded Threaded
3 messages Options
smq
Reply | Threaded
Open this post in threaded view
|

自定义窗口触发器 Trigger

smq
Trigger 抽象类其中有两个方法,onProcessingTime ()和OnEventTime (),在源码描述中,当trigger context设置的定时器触发时会调用上面两个方法。但是在实际测试中,发现,就算没有设置定时器,上面的方法也能在水印超过窗口最大时间之后触发。请问有人知道了解过这个吗。
smq
Reply | Threaded
Open this post in threaded view
|

回复:自定义窗口触发器 Trigger

smq
补充一下,我是继承Trigger自己实现了一个定时器,然后只重写了三个抽象方法





------------------ 原始邮件 ------------------
发件人: smq <[hidden email]&gt;
发送时间: 2021年3月8日 15:30
收件人: user-zh <[hidden email]&gt;
主题: 回复:自定义窗口触发器 Trigger



Trigger 抽象类其中有两个方法,onProcessingTime ()和OnEventTime (),在源码描述中,当trigger context设置的定时器触发时会调用上面两个方法。但是在实际测试中,发现,就算没有设置定时器,上面的方法也能在水印超过窗口最大时间之后触发。请问有人知道了解过这个吗。
Reply | Threaded
Open this post in threaded view
|

Re: 自定义窗口触发器 Trigger

Kezhu Wang
In reply to this post by smq
那是 window cleanup timer。

Flink timer 需要存储在 state ,所以没法像普通程序那样可以存储丰富的回调上下文。当 timer 触发时,operator
基本都是把这个 timer 派送给所有可能的接受者,接受者需要过滤掉非期望的 timer 回调。在 WindowOperator 中,即使
cleanup timer 不是 trigger 注册的,trigger 也会收到 cleanup timer 的回调,trigger
需要自己过滤掉这个回调。你可以看下 EventTimeTrigger,
ContinuousEventTimeTrigger,它们都会过滤掉非期望的回调(返回 TriggerResult.CONTINUS)。


Best,
Kezhu Wang

On March 8, 2021 at 15:37:52, smq ([hidden email]) wrote:

Trigger 抽象类其中有两个方法,onProcessingTime ()和OnEventTime (),在源码描述中,当trigger
context设置的定时器触发时会调用上面两个方法。但是在实际测试中,发现,就算没有设置定时器,上面的方法也能在水印超过窗口最大时间之后触发。请问有人知道了解过这个吗。