flink window可以按照time 与 count分为两类,timeWindow可按照事件事件也可按照处理时间,countWindow按照计数方式,当流入窗口的数据达到一定数据则会触发窗口函数。
countWindow 与timeWindow一样需要Assigner、Trigger 等窗口组件,那么flink 是如何实现计数窗口,主要考虑两个问题:1. timeWindow 窗口分配有开始、结束时间来确定一个窗口,但是countWindow 如何确定一个窗口;2. 如何完成计数,以能够判断到达countWindow 的触发条件。其实这两个问题,通过Assigner、Trigger 来完美解决,以KeyedStream keyed流来分析查看countWindow 入口:
public WindowedStream<T, KEY, GlobalWindow> countWindow(
long size) {
return window(GlobalWindows.create()).
trigger(PurgingTrigger.of(CountTrigger.of(s