flink1.12.x window窗口和分类(time window、count window、session window会话窗口)

提出问题

在流处理应用中,数据是 连续不断的,有些统计容易处理,比如:统计数据的数量,来一条数据,就 加1

但是,有些统计,需要指定 范围,才能更好的统计,如:时间范围

时间范围的应用场景:

  • 每10分钟 统计 首页某商品的访问次数,如果访问量小于某个阈值,说明该商品没有展示价值,应立即撤下

  • 景区监控,每30分钟 统计 景区内的人数,防止人数过多,发生安全问题

  • 农业大数据,每2分钟 统计 温度、湿度等,防止秧苗死亡

结论

  • 如上,当 数据连续不断时,要想做 统计,需要有个 范围,如:时间范围

  • 时间范围 越小,越接近 实时处理(如果每2天统计一次,显然不是实时处理)

解决

此时,需要定义一个 window(窗口),用来收集最近 10 分钟内的数据,并对该窗口内的数据进行计算

window窗口

窗口(Window)就是从Streaming 到 batch 的一个桥梁。Flink 提供了非常完善的窗口机制,这是 Flink 最大的亮点之一

窗口就是 让数据堆积(不会像默认的流处理,来一条处理一条),只有 当满足触发计算的时候,才开始计算

窗口分类

时间窗口 time window(常用)

时间窗口,根据时间划分窗口,如:每 n 分钟进行统计

时间窗口分类:

  • 基于time的滚动窗口(Tumbling Window)
  • 基于time的滑动窗口(Sliding Window)

数量窗口 count window

累积一定数量的数据(不会像默认的流处理,来一条处理一条),当攒够数量时,才开始计算,比如:每来5个数据才计算

count window窗口分类:

  • 基于数量的滚动窗口(Tumbling Window)

  • 基于数量的滑动窗口(Sliding Window)

会话窗口 session window

详见 链接

总结

  • 基于time的滚动窗口(Tumbling Window)(常用)
  • 基于time的滑动窗口(Sliding Window)(常用)
  • 基于数量的滚动窗口(Tumbling Window)
  • 基于数量的滑动窗口(Sliding Window)
  • 会话窗口 session window

原文出处:/show_1IX20QOWp8iM.html