spark之实时统计
这篇博客其实和Spark之Spark Streaming处理文件流数据区别不是特别的大,权可以看作为毕业设计作准备的,使用了线程和通信的模式处理文件流,最后对5秒内的输入数据进行统计,代码如下
package openClass
import org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream}
import org.apache.spark.streaming.{Seconds, StreamingContext}
import org.apache.spark.{SparkConf, SparkContext}
object kugouTopN {
def main(args: Array[String]): Unit = {
//local[2]两个线程,一个计算,一个接受
val conf = new SparkConf().setAppName("kugoutopN").setMaster("local[2]")
val sc = new SparkContext(conf)
//创建streaming
val ssc = new StreamingContext(sc, Seconds(5))
sc.setLogLevel("WARN")
//创建接收
val lines: ReceiverInputDStream[String] = ssc.socketTextStream("127.0.0.1", 8888)
//处理操作
val map: DStream[(String, Int)] = {
lines.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _).
}
map.print()
//开启线程,保持数据不断接收
ssc.start()
//等待终止
ssc.awaitTermination()
}
}