WordCount程序【Spark Streaming版本】

~~

前置

~~
Spark Streaming 常常对接 :本地文件、HDFS、端口、flume、kafka

package february.streaming

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

/**
  *              ====   Spark Streaming可以监听本地文件、HDFS、端口、flume、kafka  =====
  *
  *
  * Description:  使用Spark Streaming处理文件系统(local/hdfs)的数据
  * 通过 SparkStreaming 来实现WordCount
  * Spark Streaming
  *
  * 提交代码
  * spark-submit --master spark://spark001:7077 --deploy-mode client --class february.streaming.SparkStreamingWordCount /home/liuge36/jars/SparkDayDemo.jar
  *
  * @Author: 留歌36
  * @Date: 2019/2/21 17:27
  */
object SparkStreamingWordCount {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf()
      .setMaster("local[2]") //local[2] 或local也都可以
      .setAppName(this.getClass.getSimpleName)

    //拿到StreamingContext 这个上下文对象
    val ssc = new StreamingContext(sparkConf, Seconds(5))

    // 读取Windows 10电脑上的文件目录,没有成功,可能是因为moving的原因吧
//    val input = ssc.textFileStream("file:///f:\tmp")

    // 读取centos local  从源码中也可以看出,需要移动文件到指定目录下,才能检测到
    val input = ssc.textFileStream("file:///home/liuge36/feb/")

    // 读取Linux服务器的文件目录
//    val lines = ssc.textFileStream("file:///")

    val lines = input.flatMap(line => line.split(","))

    val count = lines.map(word => (word, 1)).reduceByKey{case (x, y)=> x+y }

    // 输出结果
    println("==================华丽分割线开始============================")
    count.print()

    //启动主程序,
    ssc.start()
    //阻塞 等待主程序被关闭
    ssc.awaitTermination()
  }

}

更多相关小demo:每天一个程序:https://blog.csdn.net/liuge36/column/info/34094

原文地址:https://www.cnblogs.com/liuge36/p/12614762.html