package cn.kgc.day0819.test10
import org.apache.spark.SparkConf
import org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream}
import org.apache.spark.streaming.{Seconds, StreamingContext}
object SparkStreamingWindowDemo extends App {
//TODO 创建一个spark StreamingContext对象
val conf: SparkConf = new SparkConf().setMaster("local[2]").setAppName("DEMO01")
val ssc = new StreamingContext(conf, Seconds(5))
//TODO 使用spark streaming来进行wordcount
val inputDstream: ReceiverInputDStream[String] = ssc.socketTextStream("hadoop101", 9999)
//TODO 对输入的流进行操作
// hadoop spark kafka
val wordDstream: DStream[String] = inputDstream.flatMap(_.split(" "))
val wordAndOneDstream: DStream[(String, Int)] = wordDstream.map((_, 1))
val windowRes = wordAndOneDstream.reduceByKeyAndWindow(
(a: Int, b: Int) => (a + b),
Seconds(15),
Seconds(10)
)
windowRes.print()
//TODO 通过start() 启动消息采集和处理
ssc.start()
//TODO 等待程序终止
ssc.awaitTermination()
}