0
点赞
收藏
分享

微信扫一扫

Flink-org.apache.flink.streaming.api.windowing.windows.Window


注意:触发窗口的条件不仅和维度有关,而且还与事件有关,比如我事件类型设置了eventTime

env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime);

那么如果代码中我没有设置watermark,则该窗口永远不会触发,即使你设置了时间窗口或者计数窗口

下面开始介绍flink中的window(窗口)

按照维度:分为时间窗口和计数窗口
1.时间窗口TimeWindow:比如要计算最近1个小时之内的数据,这就需要时间窗口
2.计数窗口CountWindow:比如要计算最近50个数据,这就需要计数窗口

按照类型:滚动窗口和滑动窗口(多个窗口的共同称呼
1.滚动窗口TumblingWindow,计算的数据不重叠,比如1个窗口获取第1-第5个数据,第2个窗口获取第6-第10个数据,这两个窗口形成了一个窗口集合,该集合就叫做滚动窗口
2.滑动窗口SlidingWindow,计算的数据重叠,比如第1个窗口获取上午10-11点的数据,第2个窗口获取上午10.30-11.30的数据,其中10.30–11点这段时间被两个窗口重叠了,这两个窗口形成的集合,就叫做滑动窗口

API

timeWindow(Time t1);

timeWindow(Time.minutes(2))

参数个数是1个,表示滚动窗口,比如当前时间是00:00:35,那么第一次触发窗口的时间是00:01:00(注意不是00:02:35),接下来,每2分钟触发一次窗口,下次触发的时间是00:03:00,以此类推

timeWindow(Time t1,Time t2);

//参数个数是2个,表示滑动窗口,下面这行代码表示窗口大小为2分钟 ,每
//隔1分钟计算一次最近两分钟内的数据
timeWindow(Time.minutes(2),Time.minutes(1))

增量聚合与全量聚合(新版flink似乎不用考虑这个概念)
增量聚合:窗口每进入一条数据就计算一次,一般当countWindow的参数为1的时候才会出现,而时间窗口timeWindow一定是全量聚合,所以时间窗口也不会出现增量聚合
全量聚合:窗口触发的时候才会对窗 口内的所有数据进行一次计算

countWindowAll与countWindow的区别
延伸一点就是说以windowAll结尾的和window结尾的区别
windowAll结尾的不可以并行,原文注释:
Note: This operation is inherently non-parallel since all elements have to pass through the same operator instance


举报

相关推荐

0 条评论