该接口的注释上有很明白的代码例子在里面,本文只是简单的记录一下并且加上个人对这个接口的理解与不解,该签名如下
AggregateFunction<IN, ACC, OUT>
泛型IN指的是输入
泛型OUT指的是输出
泛型ACC叫累加器,指的是在一个窗口周期内一直存活的一个对象,该对象是让我们对每一个过来的数据进行累加并且保存其结果的
// 每次开始统计一个窗口内的数据的时候,就会调用一次该方法
ACC createAccumulator();
// 每次来数据的时候,都会调用一次该方法
// 假设在一个窗口周期之内来了三次数据,那么就会调用三次该方法
ACC add(IN value, ACC accumulator);
// 在getResult之前会调用一次这个方法,将多个slot中的ACC相加到一起,
// 准备用来统计
ACC merge(ACC a, ACC b);
// 每次即将统计的时候,调用该方法,因为该方法就是用来统计
OUT getResult(ACC accumulator);