前言


本文介绍Flink窗口以及对应的窗口处理函数。
多数为学习Flink官网后的个人理解。
如有错误或值得优化的地方欢迎指正。


版本说明

Flink 2.1.0
Java 11


概念介绍

窗口(Window)是处理无界流的关键所在。窗口可以将数据流装入大小有限的“桶”中,再对每个“桶”加以处理。

1. 根据stream类型决定窗口后续操作

  • keyed stream
  • non-keyed stream
    大多数情况都是keyed stream。

2. Window Assigner

理解Flink window assigner的重点在于理解生成新窗口频率的条件。

Flink有现成的四种窗口,另外如有特殊需求可以继承window assigner,来自定义窗口。

  • 滚动窗口(Tumbling Windows)

    . 条件:间隔固定时间计算一次,offset或许能实际应用。

    • 滚动窗口使用示例
    • offset使用示例

  • 滑动窗口(Sliding Windows)

    条件:滑动距离(window slide)参数来控制生成新窗口的频率。
    注意:如果 slide 小于窗口大小,滑动窗口可以允许窗口重叠。


  • 会话窗口(Session Windows)

  • 全局窗口(Global Windows)

  • 自定义窗口

自定义窗口相关内容本文不过多涉及,详情可以查看Flink官方文档。


3. 窗口函数(Window Functions)


高阶用法

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐