首页/数据/数据工程与 ETL 速查/流处理窗口类型:滚动/滑动/会话/累计
管道基础52 条

流处理窗口类型:滚动/滑动/会话/累计

窗口把无界流切成可聚合的片段:滚动窗口不重叠、滑动窗口按步长重叠、会话窗口按活跃间隔切分、累计窗口在同一周期内逐段累加。

滚动窗口TUMBLE,固定长度、不重叠
滑动窗口HOP,固定长度、可重叠
会话窗口SESSION,按活跃间隔切分
累计窗口CUMULATE,同一窗口内逐步累计输出

窗口选型

场景推荐窗口说明
每分钟订单量滚动 1 分钟互不重叠,最常用
近 5 分钟成交额(每 10 秒刷新)滑动 5 分钟、步长 10 秒重叠计算,注意状态开销
用户会话行为分析会话窗口间隔超过阈值即切分

Flink SQL 窗口写法

Flink SQL 窗口写法
-- 滚动 1 分钟
GROUP BY TUMBLE(ts, INTERVAL '1' MINUTE)
-- 滑动:窗口 5 分钟、每 10 秒滑动一次
GROUP BY HOP(ts, INTERVAL '10' SECOND, INTERVAL '5' MINUTE)
-- 会话:静默 30 秒即切分
GROUP BY SESSION(ts, INTERVAL '30' SECOND)
窗口大小与业务节奏对齐:支付风控看秒级,日报看天级,不要所有场景都套同一套窗口。

易错点

  • 滑动窗口步长越小、窗口越长,状态与计算量成倍增长
  • 会话窗口难以预估窗口大小,长期不活跃的 key 可能产生超长窗口

数据来源与参考

  • Apache Flink 官方文档:Windowing TVF
  • Apache Flink 官方文档:Windows
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌