Flink窗口
一、窗口介绍
1.1 Window:时间窗口
滚动窗口(Tumbling Window)将事件拆分成固定长度,窗口之间不重叠,窗口长度固定
例:每10s统计过去10s订单数据
滑动窗口(Sliding Window)按照滑动步长拆分成固定长度,窗口长度固定。根据指定步长(Slide)向前滑动,步长小于窗口则窗口间重叠。
例:每10s统计过去10分钟 订单数据
会话窗口(Session Window)两个窗口之间有一个间隙(Session Gap),大于间隙没收到消息,则该窗口关闭,窗口不重叠
1.2 数量窗口(Count Windows)
按照一定的数据量作为窗口统计
二、窗口使用
2.1 使用方式
有keyBy ? window() api
没keyBy ? windowAll() api ,并?度低
2.2 窗?分配器 Window Assigners
定义了如何将元素分配给窗?,负责将每条数据分发到正确的window窗?上
window() 的参数是?个 WindowAssigner,flink本身提供了Tumbling、Sliding 等Assigner
2.3 窗?触发器 trigger
?来控制?个窗?是否需要被触发
每个窗?分配器WindowAssigner 都有?个默认触发器,也?持?定义触发器
2.4 窗? window function ,对窗?内的数据做啥
作用:定义了要对窗?中收集的数据做的计算操作 增量聚合函数:aggregate(agg函数,WindowFunction(){ }) 窗?保存临时数据,每进??个新数据,会与中间数据累加,?成新的中间数据,再保存到窗?中 常?的增量聚合函数有 reduceFunction、aggregateFunction 其中:min、max、sum 都是简单的聚合操作,不需要使用?定义规则 例子:AggregateFunctionIN是输?类型,ACC是中间聚合状态类型,OUT是输出类型,是聚合统计当前窗?的数据
2.5 全窗?函数
apply(new processWindowFunction(){ })
描述:窗?先缓存该窗?所有元素,等窗?的全部数据收集起来后再触发条件计算
常?的全窗?聚合函数 windowFunction(未来可能弃?)、processWindowFunction(可以获取到窗?上下? 更多信息)
WindowFunction
IN是输?类型,OUT是输出类型,KEY是分组类型,W是时间窗
如果想处理每个元素更底层的API的时候?,process(new KeyedProcessFunction() {processElement、onTimer})
2.6 其它知识点
一个窗口内是左闭右开
timeWindow在1.12版本过期,统?使?window。countWindow没过期