1.目的
对netcat输出的单词按时间5s分片进行单词计数
2.素材
启动linux上的netcat程序
nc -lk 9999
不断输入字符
hello world hi world
3.代码
/**
* Created by puwenchao on 2016-08-19.
*/
import org.apache.log4j.{Level, Logger}
import org.apache.spark._
import org.apache.spark.streaming._
import org.apache.spark.storage.StorageLevel
object streamingwc{
def main(args:Array[(String)]): Unit ={
//设置日志等级
Logger.getLogger("org.apache.spark").setLevel(Level.WARN)
Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF)
//创建SparkStreaming上下文,并设置时间间隔5s
val conf=new SparkConf().setAppName("streamingwc").setMaster("local[2]")
val ssc=new StreamingContext(conf,Seconds(5))
//设置数据来源与持久化政策
val lines=ssc.socketTextStream("192.168.252.164",9999,StorageLevel.MEMORY_ONLY)
//执行单词计数
val wc=lines.flatMap(_.split(" ")).map(x=>(x,1)).reduceByKey(_+_)
//打印离散流中的条目
wc.print()
//开始计算
ssc.start()
//等待计算终结
ssc.awaitTermination()
}
}
4.输出
-------------------------------------------
Time: 1471574670000 ms
-------------------------------------------
(hello,1)
(world,2)
(hi,1)