~~
前置
~~
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