您的位置:首页 > 其它

DStream操作实战:1.SparkStreaming接受socket数据,实现单词计数WordCount

2018-03-11 22:06 591 查看
package cn.testdemo.dstream.socket
    import org.apache.spark.{SparkConf, SparkContext}
    import org.apache.spark.streaming.{Seconds, StreamingContext}
    import org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream}
    //todo:利用sparkStreaming接受socket数据实现单词计数
    object SparkStreamingSocket {
      def main(args: Array[String]): Unit = {
          //1、创建sparkConf
          val sparkConf: SparkConf = new SparkConf().setAppName("SparkStreamingSocket").setMaster("local[2]")
          //2、创建sparkContext
          val sc = new SparkContext(sparkConf)
           sc.setLogLevel("WARN")
          //3、创建streamingContext,它需要2个参数,一个sparkContext,另一个是当前批次的时间间隔
          val ssc = new StreamingContext(sc,Seconds(5))
          //4、通过streamingcontext获取socket数据
          val stream: ReceiverInputDStream[String] = ssc.socketTextStream("192.168.216.121",9999)
          //5、切分每一行
          val wordsDStream: DStream[String] = stream.flatMap(_.split(" "))
          //6、每个单词计为1
          val wordAndOneDStream: DStream[(String, Int)] = wordsDStream.map((_,1))
          //7、相同单词出现的次数累加
           val resultDstream: DStream[(String, Int)] = wordAndOneDStream.reduceByKey(_+_)
          //8、打印输出
            resultDstream.print()
          //开启计算
          ssc.start()
          //等待退出
          ssc.awaitTermination()
      }
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐