Flink, 大数据

flink-19 窗口

窗口:将无限数据切割成有限的”数据块“进行处理

使用水桶接水的比喻,水桶就是窗口

在flink中,窗口其实并不是一个”框“,应该把窗口理解成一个”桶“,在flink中,窗口可以把流切割成有限大小的多个”存储桶“(bucket),每个数据都会分发到对应的桶中,当到达窗口结束时间时,就对每个桶中手机的数据进行计算处理。

flink中窗口并不是静态准备好的,而是动态创建。当有落在这个窗口区间范围的数据到达时,才创建对应的窗口。

另外我们认为到达窗口结束时间时,窗口就触发计算并关闭,实际上”触发计算“和”窗口关闭“两个行为也可以分开。

窗口的分类

按驱动类型分:

  • 时间窗口(Time Window)
    • 每小时装一桶水,到点就换
  • 计数窗口(Count Window)
    • 装满一桶水就换

按窗口分配数据的规则分:

  • 滚动窗口(Tumbling Window)
    • 均匀切片
    • 窗口之间没有重叠也不会间隔
    • 首尾相接
    • 每个数据都会被分配到一个窗口,而且只会属于一个窗口
  • 滑动窗口(Sliding Window)
    • 大小也是固定的,但是窗口之间不是首尾相接,而是可以错开一定位置
    • 滑动窗口会出现重叠
    • 数据有可能会分配到多个窗口中,具体的个数由窗口的大小和滑动步长来决定
  • 会话窗口(Session Window)
    • 会话的超时时间也就是两个会话窗口的最小间距
    • 比如用桶接水 10分钟内水不断就放一个桶,超过10分钟没水就换另一个桶
    • 数据不会重叠
  • 全局窗口(Global Window)
    • 没有结束的时候
    • 默认时不会触发计算的

About 蓝染君

喜爱编程开发的程序猿