目录
1.关于Window
1.1Window概述
Windows are at the heart of processing infinite streams. Windows split the stream into “buckets” of finite size, over which we can applycomputations.
从官网的翻译来看意思为:窗口是处理无限流的核心。Windows将流拆分为大小有限的“bucket”,我们可以将其应用于计算。
1.2Window的类型
关于Window的可以分成两类:
1.CountWindow:按照指定的数据条数生成一个Window,与时间无关。
2. TimeWindow:按照时间生成Window。
对于TimeWindow,可以根据窗口实现原理的不同分成三类:滚动窗口(Tumbling Window)、滑动窗口(Sliding Window)和会话窗口(Session Window)。
总体而言可以使用下图来概括一下
1.2.1关于TimeWindow的详细描述
1.滚动窗口:将数据依据固定的窗口长度对数据进行切片(在本质上它是属于一种特殊的滑动窗口)。
特点:时间对齐,窗口长度固定,没有重叠
创建方式(除WindowAll方法外,所有使用window开窗算子之前必须要对之前的数据进行KeyBy分组):
.timeWindow(Time.seconds(10))
tips: 1.10.0之后这种方法已经过时了,也可以使用下面的方法来创建
.window(TumblingProcessingTimeWindows.of(Time.seconds(5)))
2.滑动窗口: 滑动窗口是固定窗口的更广义的一种形式,滑动窗口由固定的窗口长度和滑动间隔(即滑动步长)组成。
特点:时间对齐,窗口长度固定,可以有重叠
创建方式:
.timeWindow(Time.seconds(10),Time.seconds(5))
tips: 1.10.0之后这种方法已经过时了,也可以使用下面的方法来创建
.window(SlidingProcessingTimeWindows.of(Time.seconds(10),