文章目录
什么是窗口?
流相当于一条永不停机的生产流水线, 窗口则是一个闸门,拦住囤积生产的商品,定时或者囤积到一定数量释放一次.
窗口生命周期
- 创建: 第一个属于该窗口的时间出现
- 结束: 第一个超过该窗口时间范围(包括延迟时间)的时间出现
- 存活时间: 窗口的范围,比如统计5分钟 + 允许的延迟时间,比如2分钟=7分钟
keyby和nokeyby
- 按key分组,相同key发送到相同task中,可以并行处理
- 未按key分组,所用数据发送到同一个,无法并行处理
窗口组成
assigner
决定数据发送到哪个窗口
内置的时间窗口assigner:
- tumbling windows
- sliding windows
- session windows
- global windows(使用时,需要自定义trigger,不然不会触发释放内容)
windowfunction
窗口方法. 当窗口中的数据积攒到需要触发时,怎么处理数据,比如计数,求和等,也就是聚合函数.
-
聚合函数,来一条和之前的数据累加计算,实时处理
-
常用方法:
-
ReduceFunction: 合并两条输入数据,输入和输出格式相同
-
AggregateFunction: reducefunction的一般式.更灵活,可自定义聚合中间过程,和不一样的输
-