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:获取侧输出流

浙公网安备 33010602011771号