一.引言
Flink 针对 window 提供了多种自定义 trigger,其中常见的有 CountTrigger 和 ProcessingTimeTrigger,下面通过两个 demo 了解一下两个 Trigger 的内部实现原理与窗口触发的相关知识。
二.辅助知识
介绍上述两个 Trigger 之前,首先重新回顾下之前提高的 trigger 基础知识。
1.Trigger 内部方法
· onElement :元素到达后执行的操作
· onProcessingTime:到达规定处理时间窗口执行的操作
· onEventTime :到达规定事件时间窗口执行的操作
· clear : 清除相关 value 变量
2.Window Trigger 后的操作
· TriggerResult.CONTINUE :跳过,什么都不做
· TriggerResult.FIRE :触发窗口计算
· TriggerResult.PURGE : 清除窗口元素
· TriggerResult.FIRE_AND_PURGE : 触发窗口操作,随后清空窗口元素
3.ReducingStateValue
ReducingStateValue 是一个抽象的统计量,需要用户自己定义其返回类型和对应的 reduce 操作,这里 reduce 并不是减少而是合并的意思,可以理解为 spark 里的 reduce(_ + _) 操作,即针对给定的 object1 和 object2,合成一个单独的 object,定义该变量方法如下: