Flink增量聚合函數(shù):reduce和aggregate的區(qū)別是什么?
窗口函數(shù),即數(shù)據(jù)劃分窗口后可以調(diào)用的處理函數(shù)。
全量函數(shù):窗口先緩存所有元素,等到觸發(fā)條件后對窗口內(nèi)的全量元素執(zhí)行計算。
增量函數(shù):窗口保存一份中間數(shù)據(jù),每流入一個新元素,新元素與中間數(shù)據(jù)兩兩合一,生成新的中間數(shù)據(jù)。
增量聚合函數(shù)
指窗口每進入一條數(shù)據(jù)就計算一次

實現(xiàn)方法(常見的增量聚合函數(shù)如下):
reduce(reduceFunction)
aggregate(aggregateFunction)
sum()
min()
max()
reduce和aggregate的區(qū)別

reduce接受兩個相同類型的輸入,生成一個同類型輸出,所以泛型就一個 <T>
maxBy、minBy、sum這3個底層都是由reduce實現(xiàn)的
aggregate的輸入值、中間結(jié)果值、輸出值它們3個類型可以各不相同,泛型有<T, ACC, R>
ReduceFunction
ReduceFunction定義了如何把兩個輸入的元素進行合并來生成相同類型的輸出元素的過程,F(xiàn)link使用ReduceFunction來對窗口中的元素進行增量聚合
AggregateFunction
AggregateFunction 比 ReduceFunction 更加的通用,它有三個參數(shù):輸入類型(IN)、累加器類型(ACC)和輸出類型(OUT)。
輸入類型是輸入流中的元素類型,AggregateFunction有一個add方法可以將一個輸入元素添加到一個累加器中。該接口還具有創(chuàng)建初始累加器(createAccumulator方法)、將兩個累加器合并到一個累加器(merge方法)以及從累加器中提取輸出(類型為OUT)的方法。
