flink 滚动窗口滑动窗口会话窗口全局窗口
Posted 但行益事莫问前程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flink 滚动窗口滑动窗口会话窗口全局窗口相关的知识,希望对你有一定的参考价值。
文章目录
前言
根据分配数据的规则,窗口的具体实现可以分为 4 类:滚动窗口(Tumbling Window)、滑动窗口(Sliding Window)、会话窗口(Session Window),以及全局窗口(Global Window)
1. 滚动窗口(Tumbling Windows)
滚动窗口有固定的大小,是一种对数据进行均匀切片
的划分方式。窗口之间没有重叠,也不会有间隔,是“首尾相接”的状态。滚动窗口可以基于时间定义,也可以基于数据个数定义;需要的参数只有一个,就是窗口的大小(window size)。
2. 滑动窗口(Sliding Windows)
与滚动窗口类似,滑动窗口的大小也是固定的。区别在于,窗口之间并不是首尾相接的,而是可以“错开”一定的位置。如果看作一个窗口的运动,那么就像是向前小步“滑动”一样。定义滑动窗口的参数有两个:除去窗口大小
(window size)之外,还有一个滑动步长
(window slide),代表窗口计算的频率。
滑动窗口其实是固定大小窗口的更广义的一种形式;换句话说,滚动窗口也可以看作是一种特殊的滑动窗口——窗口大小等于滑动步长(size = slide)
3. 会话窗口(Session Windows)
借用会话超时失效的机制来描述窗口
简单来说,就是数据来了之后就开启一个会话窗口,如果接下来还有数据陆续到来,那么就一直保持会话;如果一段时间一直没收到数据,那就认为会话超时失效,窗口自动关闭。与滑动窗口和滚动窗口不同,会话窗口只能基于时间来定义
,而没有“会话计数窗口”的概念。
考虑到事件时间语义下的乱序流,在 Flink 底层,对会话窗口的处理会比较特殊:每来一个新的数据,都会创建一个新的会话窗口;然后判断已有窗口之间的距离,如果小于给定的 size,就对它们进行合并(merge)操作。在 Window 算子中,对会话窗口会有单独的处理逻辑。
4. 全局窗口(Global Windows)
这种窗口全局有效,会把相同 key 的所有数据都分配到同一个窗口中;说直白一点,就跟没分窗口一样。无界流的数据永无止尽,所以这种窗口也没有结束的时候,默认是不会做触发计算的。如果希望它能对数据进行计算处理,还需要自定义触发器
(Trigger)
开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系
以上是关于flink 滚动窗口滑动窗口会话窗口全局窗口的主要内容,如果未能解决你的问题,请参考以下文章
11.Flink四大基石Window窗口的分类Flink提供了很多各种场景用的WindowAssigner基于时间的滚动和滑动基于时间的滚动和滑动窗口基于数量的滚动和滑动
11.Flink四大基石Window窗口的分类Flink提供了很多各种场景用的WindowAssigner基于时间的滚动和滑动基于时间的滚动和滑动窗口基于数量的滚动和滑动