flink1.12.x window function窗口函数-增量聚合函数、全量窗口函数(全窗口函数)

说明

一个完整的窗口操作,要指定 window ,还要指定 function

function 表示最终的目的,比如:

  • 找出这个窗口中的最大值
    .window(...)
    .max(1); // 窗口函数
    
  • 统计这个窗口中的和
    .window(...)
    .sum(1); // 窗口函数
    

分类

  • 增量聚合函数(incremental aggregation functions)

  • 全量窗口函数(全窗口函数)(ful window functions)

增量聚合函数

每来一个数据就计算,保持一个简单的状态

ReduceFunction

将传入的两个元素,并返回同类型的元素,常用分组数据处理

flink已经提供 常见的 统计 求和、最大值 等,所以这类函数 一般不需要自己实现

AggregateFunction

是 ReduceFunction 的通用版本

全量窗口函数(全窗口函数)

先把窗口 所有数据收集起来,等到计算的时候会遍历所有数据

如:

  • ProcessWindowFunction
  • WindowFunction

应用场景

求 平均数、中位数、1/4 位数

如:求 1,3,5 的平均数

正确算法

先累加再除以数量,(1+3+5)/3=3

错误算法

分步求平均值:

  1. (1+3)/2=2
  2. (2+5)/2=3.5

原文出处:/show_1IX22Z8dErVL.html