FLINKウィンドウ機能 - ProcessWindowFunction

パッケージウィンドウ

輸入org.apache.flink.api.common.functions.AggregateFunction
輸入org.apache.flink.api.scala._
輸入org.apache.flink.streaming.api.functions.source.SourceFunctionの
輸入org.apache.flink .streaming.api.scala.StreamExecutionEnvironment
輸入org.apache.flink.streaming.api.scala.function.ProcessWindowFunction
輸入org.apache.flink.streaming.api.windowing.time.Timeの
輸入org.apache.flink.streaming.api .windowing.windows.TimeWindow
輸入org.apache.flink.util.Collector

/ **
* @author:maoxiangyiによって作成
* @version:v1.0の
* @description:窓
* @date:2019年/ 6月4日
* /
オブジェクトProcessWordCount {
DEFメイン(引数:配列[文字列]):単位= {
//设置环境
ヴァルENV:StreamExecutionEnvironment = StreamExecutionEnvironment.createLocalEnvironment()
//设置数据源
env.addSource(新しいSourceFunction [文字列] {
実行DEFオーバーライド(CTX:SourceFunction .SourceContext [文字列]):単位= {
一方(TRUE){
ctx.collect( "ハローハロー嵐ハロースパークをHadoopの")
のThread.sleep(1000)
}
}

(キャンセルDEFオーバーライド):単位= {}
})
//计算逻辑
.flatMap(_。スプリット(」「))
.MAP((_、1))
.keyBy(_._ 1)
.timeWindow(Time.seconds(10)、Time.seconds(10))

.process(新しいProcessWindowFunction [(文字列、INT)、(文字列、INT)、文字列、TimeWindow] {
オーバーライドDEF処理(キー:文字列、コンテキスト:コンテキスト要素:反復処理可能、OUT [(文字列、INT)]:コレクター[ (文字列、INT)]):単位= {
VAR値= 0;
elements.foreach(KV => {
値=値+ kv._2
})
out.collect(キー、値)
}
})
の.print()setParallelism。 (1)
env.execute( "ワードカウントを")
}
}

おすすめ

転載: www.cnblogs.com/maoxiangyi/p/10977967.html