← 返回首页
Window中的增量聚合和全量聚合
发表时间:2023-11-30 15:21:22
Window中的增量聚合和全量聚合

Window中的增量聚合和全量聚合。

1.Window聚合

在进行Window聚合操作的时候可以分为以下两种:

2.Window聚合之增量聚合

增量聚合:窗口中每进入一条数据,就进行一次计算。 常见的一些增量聚合函数如下: reduce()、aggregate()、sum()、min()、max()

下面我们来看一个增量聚合的例子,累加求和,对 8 、12、7、10这四条数据进行累加求和 第一次进来一条数据8,则立刻进行累加求和,结果为8。 第二次进来一条数据12,则立刻进行累加求和,结果为20。 第三次进来一条数据7,则立刻进行累加求和,结果为27。 第四次进来一条数据10,则立刻进行累加求和,结果为37。

再来看一下Reduce函数的使用。

从这里面可以看出来reduce是每次获取一条数据,和上一次的执行结果求和,也就是来一条数据立刻计算一次。

3.Window聚合之全量聚合

全量聚合:等属于窗口的数据到齐,才开始进行聚合计算【可以实现对窗口内的数据进行排序等需求】 常见的一些全量聚合函数为apply(windowFunction)和process(processWindowFunction)。

注意:processWindowFunction比windowFunction提供了更多的Context(上下文)信息。

下面我们来看一个全量聚合的例子,求最大值,对8 、12、7、10这四条数据求最大值 第一次进来一条数据8。 第二次进来一条数据12。 第三次进来一条数据7。 第四次进来一条数据10,此时窗口触发,才会对窗口内的数据进行排序,获取最大值。

下面来看一下process函数的使用

我们发现,这些全量聚合的函数获取到的输入数据是一个Iterable,里面是包含多条数据的,从这可以看出来,这两个函数是一次性获取一个窗口内的所有数据进行计算的。