Flink学习笔记之四Time&Window

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

你可能感兴趣的:(Flink学习笔记之四Time&Window)