flink1.12.x 窗口函数介绍、分类 作者:马育民 • 2022-11-28 09:29 • 阅读:10097 # 说明 划分窗口后,调用一些函数,处理窗口中的数据,这类函数就叫 **窗口函数** **提示:**大多数Flink应用都是要划分窗口的,如果不划分窗口,那就得计算流中所有的数据的结果,很少有这样的需求 # 全量窗口函数 和 增量窗口函数 [![](/upload/0/0/1IX4Uig62JHQ.png)](/upload/0/0/1IX4Uig62JHQ.png) 窗口函数主要分:**全量窗口函数** 和 **增量窗口函数** ### 全量函数 窗口先 **缓存所有元素**,等到触发时,对窗口内的所有元素执行计算 ### 增量函数 窗口保存一份 **中间数据**,每来一个新元素,新元素与中间数据进行计算,生成新的中间数据 # 全量函数方法区别 apply和process的区别如下图: [![](/upload/0/0/1IX4Us4yurmT.png)](/upload/0/0/1IX4Us4yurmT.png) - apply和process都是处理全量计算,但工作中正常用process。 - process更加底层,更加强大,有open/close生命周期方法,又可获取RuntimeContext。 # 增量函数方法区别 reduce和aggregate的区别: [![](/upload/0/0/1IX4Us5wmXfa.png)](/upload/0/0/1IX4Us5wmXfa.png) - `reduce` 接受两个相同类型的输入,生成一个同类型输出,所以泛型就一个 `` - `maxBy`、`minBy`、`sum` 这3个底层都是由 `reduce` 实现的 - `aggregate` 的输入值、中间结果值、输出值它们3个类型可以各不相同,泛型有 `` 参考: https://blog.csdn.net/winterking3/article/details/115352463 原文出处:http://malaoshi.top/show_1IX4Us8vT8Dj.html