数据进入到窗口的时候,窗口是否触发后续的计算由窗口触发器决定,每种类型的窗口都有对应的窗口触发机制。WindowAssigner 默认的 Trigger通常可解决大多数的情况。我们通常使用方式如下,调用trigger()方法把我们想执行触发器传递进去:
SingleOutputStreamOperator<Product> name = name.keyBy("name").window(TumblingEventTimeWindows.of(Time.seconds(5))).trigger(ContinuousEventTimeTrigger.of(Time.seconds(1)))
.process(...);
如果不设置trigger()方法则 WindowAssigner 会根据不通类型默认使用一个 Trigger,例如所有的 event-time WindowAssigner 都默认使用 EventTimeTrigger。 这个 trigger 会在 watermark 越过窗口结束时间后直接触发,一共有以下几种trigger
文章来源:https://www.toymoban.com/news/detail-656784.html
ProcessingTimeoutTrigger: 可以将任意 Trigger 作为参数转为为 ProcessingTimeout 类型的 Trigger。在第一个元素到达后设置一个超时处理时间。还可以通过指定 resetTimerOnNewRecord 为每个到达的元素重新更新计时器,也可以指定是否应通过 shouldClearOnTimeout 在超时时清理窗口所有数据。文章来源地址https://www.toymoban.com/news/detail-656784.html
到了这里,关于【Flink】Flink窗口触发器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!