Flink之窗口指派API模板

flink中窗口指派主要分为两类NoKeyed Windows和Keyed Windows,这里就结合这两类阐述窗口指派API

  • NoKeyed Windows
    NoKeyed Windows同时又分为两类Porcessing Time和Event Time,即处理时间语义和事件时间语义.

    1. 事件时间语义

      java 复制代码
      // 事件时间语义-滚动窗口
      source.windowAll(TumblingEventTimeWindows.of(Time.seconds(1)));
      // 事件时间语义-滑动窗口(参数1:窗口长度 参数2:滑动步长,计算频率)
      source.windowAll(SlidingEventTimeWindows.of(Time.seconds(5), Time.seconds(1)));
      // 事件时间语义-会话窗口-静态gap
      source.windowAll(EventTimeSessionWindows.withGap(Time.seconds(1)));
      // 事件时间语义-会话窗口-动态获取gap
      source.windowAll(EventTimeSessionWindows.withDynamicGap(element -> {...}));
    2. 处理时间语义

      java 复制代码
      // 处理时间语义-滚动窗口
      source.windowAll(TumblingProcessingTimeWindows.of(Time.seconds(1)));
      // 处理时间语义-滑动窗口(参数1:窗口长度 参数2:滑动步长,计算频率)
      source.windowAll(SlidingProcessingTimeWindows.of(Time.seconds(5), Time.seconds(1)));
      // 处理时间语义-会话窗口-静态gap
      source.windowAll(ProcessingTimeSessionWindows.withGap(Time.seconds(1)));
      // 处理时间语义-会话窗口-动态获取gap
      source.windowAll(ProcessingTimeSessionWindows.withDynamicGap(element -> {...}));
  • Keyed Windows
    同样Keyed Windows也分为Porcessing Time和Event Time.

    1. 事件时间语义

      java 复制代码
      // 事件时间语义-滚动窗口
      keyedStream.window(TumblingEventTimeWindows.of(Time.seconds(1)));
      // 事件时间语义-滑动窗口(参数1:窗口长度 参数2:滑动步长,计算频率)
      keyedStream.window(SlidingEventTimeWindows.of(Time.seconds(5), Time.seconds(1)));
      // 事件时间语义-会话窗口-静态gap
      keyedStream.window(EventTimeSessionWindows.withGap(Time.seconds(1)));
      // 事件时间语义-会话窗口-动态获取gap
      keyedStream.window(EventTimeSessionWindows.withDynamicGap(element -> {...}));
    2. 处理时间语义

      java 复制代码
      // 处理时间语义-滚动窗口
      keyedStream.window(TumblingProcessingTimeWindows.of(Time.seconds(1)));
      // 处理时间语义-滑动窗口(参数1:窗口长度 参数2:滑动步长,计算频率)
      keyedStream.window(SlidingProcessingTimeWindows.of(Time.seconds(5), Time.seconds(1)));
      // 处理时间语义-会话窗口-静态gap5
      keyedStream.window(ProcessingTimeSessionWindows.withGap(Time.seconds(1)));
      // 处理时间语义-会话窗口-动态获取gap
      keyedStream.window(ProcessingTimeSessionWindows.withDynamicGap(element -> {...}));

窗口指派的API模板基本就这些内容,这里都是以时间窗口作为示例的,还有根据数据条数窗口的指派,窗口指派和时间窗口是一样的,只不过将keyedStream.window更换成countWindow.

相关推荐
freejackman11 小时前
【工程化】从“单兵作战”到“多引擎架构”:基于门面模式的重构实战
大数据·数据库·hive·sql·测试工具·设计模式·架构
字节跳动数据平台12 小时前
火山引擎知识引擎VeKnow进化之路(上):从“人有数可用”到“AI有智可循”
大数据
Flynn Liang14 小时前
Apache Superset 重要特性详解(三):语义层 / 权限 / 缓存 / 嵌入的实战最佳实践(2026 版)
大数据·clickhouse·数据可视化·架构设计·superset·数据分析平台
小田学Python1 天前
工具调用:让 Agent 从“说”到“做”
大数据·大模型·agent·ai工具·deepseek
GrowingIO技术社区1 天前
用户行为分析怎么做?从业务目标到改进验证的完整流程
大数据·数据挖掘·数据分析
瑞克-桑切斯1 天前
docker Harbor 单机部署手册
大数据·运维·elasticsearch·docker·容器
演艺大赏1 天前
NiFi 起不来、登不上、节点被挤掉:一份按日志定位的排错清单
大数据
freejackman1 天前
【实战三】撕开脱敏盲区:深度解析 CASE WHEN 与窗口函数血缘
大数据·数据库·sql
wafrdggh2 天前
2026电商快递批量查询怎么用?固乔助手模板设置评测
大数据·数据库·小程序
大大大大晴天2 天前
OLTP、OLAP、数据湖、数据集市、湖仓一体到底是什么关系?
大数据