• Flink之窗口指派API模板


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

    • NoKeyed Windows
      NoKeyed Windows同时又分为两类Porcessing TimeEvent Time,即处理时间语义和事件时间语义.
      1. 事件时间语义
        // 事件时间语义-滚动窗口
        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 -> {...}));
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
      2. 处理时间语义
        // 处理时间语义-滚动窗口
        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 -> {...}));
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
    • Keyed Windows
      同样Keyed Windows也分为Porcessing TimeEvent Time.
      1. 事件时间语义
        // 事件时间语义-滚动窗口
        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 -> {...}));
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
      2. 处理时间语义
        // 处理时间语义-滚动窗口
        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 -> {...}));
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8

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

  • 相关阅读:
    点云从入门到精通技术详解100篇-基于3D点云的曲面文字检测
    【附源码】计算机毕业设计JAVA宠物领养管理系统
    如何在微信公众号正文中添加附件?
    YOLOv8-Seg改进:渐近特征金字塔网络(AFPN)
    文章系列2:Unraveling the functional dark matter through global metagenomics
    python→函数曲线
    华为机试 - 字符串重新排列
    封装一个高级查询组件
    MyBatisPlus入门篇2 - 条件查询、查询投影、查询条件、id生成策略、多记录操作、逻辑删除
    C#常识篇(二)
  • 原文地址:https://blog.csdn.net/AnameJL/article/details/133794499