zoukankan      html  css  js  c++  java
  • Flink 窗口算子

    1、新建一个窗口算子需指定两个窗口组件

    1)窗口分配器(window assigner),决定如何划分窗口,比如每5秒一个窗口(左闭右开区间),按照事件时间或者处理时间划分;

    2)窗口函数,决定如何处理窗口中的元素

    2、DataStream API 中的多种内置窗口分配器

    1)滚动窗口(Tumbling Window)

    默认滚动窗口会和纪元时间 1970-01-01-00:00:00:000 对齐,可以通过第二个参数指定偏移量

    2)滑动窗口(Sliding Window)

    需指定窗口大小以及用于定义新窗口开始频率的滑动间隔。

    如果滑动间隔小于窗口大小,窗口会出现重叠,元素会分配给多个窗口;

    如果滑动间隔大于窗口大小,一些元素可能不会分配给窗口,可能直接丢弃。

    3)会话窗口(Session Window)

    窗口长度可变且不重叠,边界由非活动间隔,即持续没有收到记录的时间间隔定义。

    3、在窗口上应用函数

    1)增量聚合函数

    ReduceFunction

    AggregateFunction 比 ReduceFunction 更加灵活,实现更复杂

    2)全量窗口函数

    ProcessWindowFunction

    比如计算中值,众数等。

    单个窗口的状态:当前正在计算的窗口实例的状态,用于维护同一窗口内多次调用 process() 方法所需共享的信息。

    使用了单个窗口的状态的 ProcessWindowFunction 需实现 clear() 方法,在窗口清除前清理仅供当前窗口使用的状态。

    全局状态:不属于任何一个窗口的健值分区状态,用于在健值相同的多个窗口之间共享信息。

    4、自定义窗口算子

    自定义分配器(assigner)、触发器(trigger)、移除器(evictor)

    reference:
    1 《Stream Processing with Apache Flink》

  • 相关阅读:
    【C++】基础及引用
    gradle打包分编译环境
    gradle
    MediaPlayer滑动不准的问题
    python初步入门
    音频播放服务
    《深入理解Android2》读书笔记(二)
    缓存(LruCache)机制
    handler机制
    监听网络状态
  • 原文地址:https://www.cnblogs.com/zgq25302111/p/12734025.html
Copyright © 2011-2022 走看看