1.窗口分类
滚动窗口(滚动时间窗口,滚动计数窗口)
滑动窗口(滑动时间窗口,滑动计数窗口)
会话窗口
全局窗口
2.窗口解释
滚动窗口(Tumbing Window):固定时间生成一个窗口,或固定数据生成一个窗口;比如8点到9点,间隔一个小时生成一个窗口,那么8点到9点进来的数据进入这个窗口,窗口相当于一个桶,把数据存储起来;或进来10个数据生成一个窗口,放在这个窗口里。
滚动窗口时间间隔固定,采取左闭右开的原则,比如八点到九点,八点封闭,九点开,一个数据是九点进来,他应该是九点到十点的窗口。
滑动窗口(Sliding Window):它有二个参数,一个是窗口长度,另一个是步长,比如一个小时生成一个窗口,五分钟滑动一次,意思是说八点到九点生成了一个窗口,八点五分到九点五分,再滑动生成一个窗口,数据是八点六分进来的,它会存在二个窗口里,数据有重叠;计数也是一个一样,如进来十个数生成一个窗口,二个步长滑动生成一个窗口,存放10个数据。
会话窗口(Session Window):会话就是在一定时间间隔内,没有产生数据,或者会话中断,就生成一个会话窗口。
3.窗口API
滚动窗口:timeWindow(Time.seconds(5)) 、countWindow(5)
滑动窗口:timeWindow(Time.seconds(5),Time.seconds(2)) 、countWindow(5,2)
会话窗口:window(EventTimeSessionWindows.withGap(Time.minutes(10)))
增量聚合函数:ReduceFunction 、AggregateFunction
全量聚合函数:ProcessWindowFunction 、WindowFunction