一.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