Flink——Window

Window 是无限数据流处理的核心,Window  将无限数据流切割成有限块进行处理(将一个无限的 stream 拆分成有限大小的 “bucket”桶,在桶上做计算处理)

Window 可以分成两大类:

  CountWindow(根据 数据量):根据窗口中相同的 key 数触发执行(不是输入元素总个数)

    滚动窗口(Tumbling Windows):当元素数量达到指定大小后,出发窗口执行。需要指定 窗口大小

    滑动窗口(Sliding Windows):需要指定 窗口大小 和 滑动大小, 每收集到 滑动大小时,执行 窗口大小计算

  TimeWindow(根据 时间):

    滚动窗口(Tumbling Windows):时间对齐,窗口长度固定,没有重叠。需要指定 滚动时间

      适用场景:每个时间段的聚合计算(适合做BI分析)

    滑动窗口(Sliding Windows):时间对齐,窗口长度固定,可以出现重叠。需要制定  窗口时间 和 滑动时间

      适用场景:对最近一个时间段内的统计(例如近5分钟内人数)

    会话窗口(Session Windows):由一系列事件组合一个指定时间长度的 timeout 间隙组成(一段时间没有接收到新数据后生成新的窗口)。时间无对齐

 

 Window Function:对窗口中收集的数据做的计算操作,主要分为两类。

  增量聚合函数:每条数据来就进行计算,保持一个简单的状态。(如ReduceFunction、AggregateFunction)

  全窗口函数:先把窗口所有数据收集起来,等到计算时遍历所有数据。(例如 ProcessWindowFunction)

 

其他API:

  tigger(触发器):定义 window 什么时候关闭,触发计算并输出结果

  evitor(移除器):定义移除某些数据的逻辑

  allowedLateness:允许处理迟到的数据

  sideOutputLateData:将迟到数据放入侧输出流

  getSideOutput:获取侧输出流

 

posted @ 2021-09-13 10:26  墨梅青莲  阅读(75)  评论(0)    收藏  举报