package storm.stream import org.apache.spark.streaming.dstream.{DStream, InputDStream, ReceiverInputDStream} import org.apache.spark.streaming.{Seconds, StreamingContext} import org.apache.spark.{SparkConf, SparkContext} import org.junit.Test class DemoScala { /** * 统计终端每行数据单词的个数 * 这个例子可以用telnet或nc测试 */ @Test def tes1(): Unit ={ val conf = new SparkConf().setMaster("local[2]").setAppName("NewWorkWordCount") //要初始化一个Spark流程序,必须创建一个StreamingContext对象,这是所有Spark流功能的主要入口点。 //还可以从现有的SparkContext对象创建流上下文对象。 //val sc = ... existing SparkContext // val ssc = new StreamingContext(sc, Seconds(1)) val ssc: StreamingContext = new StreamingContext(conf,Seconds(1)) //创建一个DStream 这行DStream表示将从数据服务器接收到的数据流。这个DStream中的每个记录都是一行文本 val lines: ReceiverInputDStream[String] = ssc.socketTextStream("192.168.8.128",9999) //flatMap是一对多的DStream操作,它通过在源DStream中的每个记录生成多个新记录来创建一个新的DStream //在这种情况下,每一行将被分割成多个单词,而单词流则表示为DStream val words: DStream[String] = lines.flatMap(_.split(" ")) //在每批中计算每个单词 val pairs: DStream[(String, Int)] = words.map(word=>(word,1)) val wordCounts: DStream[(String, Int)] = pairs.reduceByKey(_+_) Thread.sleep(1000) wordCounts.print() //开始计算 ssc.start() //等待计算终止 ssc.awaitTermination() ssc.stop(stopSparkContext = false) } }
Spark Streaming
最新推荐文章于 2025-02-22 09:46:07 发布