Flink窗口与水位线不得不说的秘密

        众所周知,Apache Flink是一个框架和分布式处理引擎,用于对无界和有界流进行有状态计算。在我们的这个Flink框架中,自Flink1.12.0正式发布流批一体统一运行之后,我们的实时计算框架真正步入了Flink的时代,flink实现了流批一体,那么在我们的flink计算中怎么实现我们的批处理,这时候就有了这个窗口的概念;

        在我们的flink框架中有四大基石:时间语义(time)、状态编程(State)、检查点(checkpoint)、窗口(Window);窗口(Window)概念是将我们的数据流根据时间分片来划分一个个窗口,用于我们更好实现数据的批处理;下面就说一下我们的窗口;

        

窗口概念

        窗口:将无限数据切割成有限的“数据块”进行处理,串口是处理无界流的核心;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jJAjyIen-1650124027990)(C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20220416182143892.png)]

窗口更像一个“桶”,将流切割成有限大小的多个存储桶,每个数据都会分发到对应的桶中,当到达窗口结束时间时,就对每个桶中收集的数据进行计算处理。

  • 动态创建:当有落在这个窗口区间范围的数据到达时,才创建对应的窗口
  • 窗口关闭:到达窗口结束时间时,窗口就触发计算并关闭

窗口的分类

  按驱动类型分类

        通常我们数据的事件流通过什么标准来划分窗口叫做窗口的“驱动类型”,常见有时间窗口、计数窗口;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1IVCUSLC-1650124027994)(C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20220416182940280.png)]        

 (1)时间窗口(timeWindow)

        时间窗口以时间点

你可能感兴趣的:(flink,大数据,java)