一.Time
1.DataStream支持3种Time
屏幕快照 2019-03-20 下午8.09.49.png
设置时间:
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setStreamTimeCharacteristic(TimeCharacteristic.ProcessingTime);
不设置,默认是 ProcessTime
2.Timestamp和Watermark
Watermark是用于触发事件执行。
屏幕快照 2019-03-20 下午8.12.56.png
并行流中的Watermark
屏幕快照 2019-03-20 下午8.14.53.png
生成Watermark
时间顺序到达,event单调递增
屏幕快照 2019-03-20 下午8.21.35.png
允许固定延迟的Assigner
屏幕快照 2019-03-20 下午8.26.10.png
延迟数据处理
屏幕快照 2019-03-20 下午8.26.55.png
3.什么是Window
屏幕快照 2019-03-20 下午8.29.02.png
4.Window分类
屏幕快照 2019-03-20 下午8.32.14.png
5.Window生命周期
屏幕快照 2019-03-20 下午8.33.07.png
6.窗口分配器Window Assigner
屏幕快照 2019-03-20 下午8.34.55.png
Tumbling Window翻滚窗口
屏幕快照 2019-03-20 下午8.35.09.png
屏幕快照 2019-03-20 下午8.36.26.png
Sliding Window滑动窗口
屏幕快照 2019-03-20 下午8.37.42.png
屏幕快照 2019-03-20 下午8.37.49.png
Session Window
屏幕快照 2019-03-20 下午8.38.28.png
屏幕快照 2019-03-20 下午8.38.41.png
Global Window
屏幕快照 2019-03-20 下午8.39.40.png
预定义Keyed Windows
屏幕快照 2019-03-20 下午8.40.29.png
7.窗口函数
屏幕快照 2019-03-20 下午8.41.46.png
ReduceFunction
屏幕快照 2019-03-20 下午8.42.55.png
Aggregation Function,ReduceFunction是特殊的聚集函数
屏幕快照 2019-03-20 下午8.43.04.png
WindowFunction
屏幕快照 2019-03-20 下午8.44.12.png
ProcessWindowFunction,区别在于多了Context
屏幕快照 2019-03-20 下午8.44.20.png
窗口状态
屏幕快照 2019-03-20 下午8.45.49.png
二.Trigger触发器
1.触发器定义触发规则,一般会有默认触发
屏幕快照 2019-03-20 下午8.49.20.png
2.EventTimeTrigger源码
onElement函数:最大时间戳,也就是窗口的边界,小于Watermark,即可以水位线以前的元素到达了,可以触发窗口计算,返回FIRE,否则CONTINUE也就是什么都不做
屏幕快照 2019-03-20 下午8.50.25.png
3.内置触发器
屏幕快照 2019-03-20 下午8.48.05.png
三.Evictors驱逐器
1.Evictor可以起到过滤作用
屏幕快照 2019-03-20 下午8.53.48.png
2.内置Evictor
屏幕快照 2019-03-20 下午8.53.57.png