Streaming-WordCount案例实操

1.需求:使用netcat工具向9999端口不断的发送数据,通过SparkStreaming读取端口数据并统计不同单词出现的次数
2.添加依赖

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-streaming_2.11</artifactId>
    <version>2.1.1</version>
</dependency>

编写代码

import org.apache.spark.SparkConf
import org.apache.spark.streaming.{Seconds, StreamingContext}

object SparkStream_WordCount {

  def main(args: Array[String]): Unit = {

    //使用SparkStream完成WordCount

    //Spark配置对象
    val sparkConf = new SparkConf().setMaster("local[*]").setAppName("wordcount")

    //实时数据分析的环境对象
    //采集周期,以指定的时间为周期采集实时数据

    val streamingContext = new StreamingContext(sparkConf, Seconds(3))

    //从指定的端口中采集数据
    val socketDStream = streamingContext.socketTextStream("hadoop102", 9999)

    //将采集的数据进行分解(扁平化)
    val wordDStream = socketDStream.flatMap(line => line.split(" "))

    //将数据进行结构的转换,方便统计分析
    val mapDStream = wordDStream.map((_, 1))

    //将转换结构的数据进行聚合处理
    val wordToSumDStream = mapDStream.reduceByKey(_ + _)

    //将结果打印出来
    wordToSumDStream.print()

    //能停止采集程序

    //启动采集器
    streamingContext.start()
    //Driver等待采集器执行
    streamingContext.awaitTermination()

  }

}

4.启动程序并通过NetCat发送数据:

 nc -lk 9999

建议把日志不打印
请看

你可能感兴趣的:(spark)