[flink]#25_Window

Window 就是用来对一个无限的流设置一个有限的集合,在有界的数据集上进行操作的一种 机制。
Window可以分为**基于时间(Time-based)的 Window 以及基于数量(Count-based)**的 window。

Flink中一共可以使用以下Window:

  • 以时间驱动的 Time Window
  • 以事件数量驱动的 Count Window
  • 以会话间隔驱动的 Session Window
  • 自定义的Window

Time Window

:一分钟的时间窗口就只会收集一分钟的 元素,并在一分钟过后对窗口中的所有元素应用于下一个算子。

dataStream.keyBy(1)
.timeWindow(Time.minutes(1)) //time Window 每分钟统计一次数量和 
.sum(1)
dataStream.keyBy(1) 
.timeWindow(Time.minutes(1), Time.seconds(30)) //sliding time Window 每隔 30s 统计过去一分钟的数量和
.sum(1);

Count Window

:如果计数窗口的值设置的为 3 ,那么将会在窗口中收集 3 个事 件,并在添加第 3 个元素时才会计算窗口中所有事件的值。

dataStream
.keyBy(1)
.countWindow(3) //统计每 3 个元素的数量之和 .sum(1);
dataStream
.keyBy(1)
.countWindow(4, 3) //每隔 3 个元素统计过去 4 个元素的数量之和 .sum(1);

Session Window

:使用该窗口的时候你可以传入一个时间参数(表示某
种数据维持的会话持续时长),如果超过这个时间,就代表着超出会话时长。

dataStream
.keyBy(1) .window(ProcessingTimeSessionWindows.withGap(Time.seconds(5)))//表示如果 5s 内 没出现数据则认为超出会话时长,然后计算这个窗口的和
.sum(1);

自定义Window

。。。待更。。。

发布了78 篇原创文章 · 获赞 0 · 访问量 1410

猜你喜欢

转载自blog.csdn.net/qq_30782921/article/details/103533297