一、Flink窗口函數
前面指定了窗口的分配器, 接著我們需要來指定如何計算, 這事由window function來負責. 一旦窗口關閉, window function 去計算處理窗口中的每個元素.
window function 可以是ReduceFunction,AggregateFunction,or ProcessWindowFunction中的任意一種.
ReduceFunction,AggregateFunction更加高效, 原因就是Flink可以對到來的元素進行增量聚合 . ProcessWindowFunction 可以得到一個包含這個窗口中所有元素的迭代器, 以及這些元素所屬窗口的一些元數據信息.
ProcessWindowFunction不能被高效執(zhí)行的原因是Flink在執(zhí)行這個函數之前, 需要在內部緩存這個窗口上所有的元素。
除了一些簡單聚合,比如 sum,max,min,maxBay,minBay ,有以下窗口聚合函數。文章來源:http://www.zghlxwxcb.cn/news/detail-677273.html
二、ReduceFunction(增量聚合函數)
輸入和輸出必須一致文章來源地址http://www.zghlxwxcb.cn/news/detail-677273.html
package com.lyh.flink07;
import com.lyh.bean.WaterSensor;
import org.apache.flink.api.common.functions.ReduceFunction;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.windowing.assigners.TumblingProcessingTimeWindows;
import org.apache.flink.streaming.api.windowing.time.Time;
public class Window_s_function {
public static void main(String[] args) throws Exception {
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(1);
env.socketTextStream("hadoop100",9999)
.map(line -> {
String[] data = line.split(",");
return new WaterSensor(
data[0],
Long.valueOf(data[1]),
Integer.valueOf(data[2])
);
})
.keyBy(WaterSensor::getId
到了這里,關于大數據-玩轉數據-Flink窗口函數的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!