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하여 만든
V1.0 : * @version
* @description : 창
* @date : 6분의 2,019 / 4
* /
객체 ProcessWordCount {
데프 주 (인수 : 배열 [문자열]) : 단위 = {
//设置环境
발 ENV : StreamExecutionEnvironment = StreamExecutionEnvironment.createLocalEnvironment ()
//设置数据源
env.addSource (새 SourceFunction [문자열] {
실행 데프 오버라이드 (CTX : SourceFunction .SourceContext [문자열]) : 단위 = {
(TRUE) {동안
ctx.collect는 ( "안녕하세요 하둡 인사 폭풍 안녕하세요 불꽃")
에 Thread.sleep (1000)
}
}

데프 무시 취소 () : 단위 = {}
})
//计算逻辑
.flatMap (_. 스플릿 ( ""))
.MAP ((_, 1))
.keyBy (_._ 1)
.timeWindow (Time.seconds (10) Time.seconds (10))

.process (새 ProcessWindowFunction [(문자열 INT) (문자열 INT), 문자열, 시간 창 {
대체 DEF 처리 (키 문자열 컨텍스트 : 컨텍스트 요소 : Iterable을 밖으로 [(문자열 INT)] 콜렉터 [ (문자열 INT)]) : 단위 = {
VAR 값 = 0;
elements.foreach (KV => {
값 = 값 + kv._2
})
out.collect (키 값)
}
})
. .print () setParallelism (1)
env.execute ( "단어 수를")
}
}

추천

출처www.cnblogs.com/maoxiangyi/p/10977967.html