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》

  • 相关阅读:
    linux环境下zookeeper下载安装
    vue父组件传值给子组件
    nginx配置负载均衡
    centos安装与配置keepalived+nginx高可用
    centos7安装jdk1.8
    linux系统centos7安装最新版本nginx
    vue项目简单菜单排序
    原生js复制粘贴上传图片前后台代码,兼容firebox,chrome, ie11,亲测有效
    mysql字符集与比较规则
    EL和JSTL表达式的使用
  • 原文地址:https://www.cnblogs.com/zgq25302111/p/12734025.html
Copyright © 2011-2022 走看看