Spark 2.x管理与开发-Spark Streaming-Spark Streaming基础(三)【开发自己的NetworkWordCount 】
Posted on 2020-08-06 16:17 MissRong 阅读(72) 评论(0) 收藏 举报Spark 2.x管理与开发-Spark Streaming-Spark Streaming基础(三)【开发自己的NetworkWordCount 】
(一定注意):
val sparkConf = new SparkConf().setAppName("NetworkWordCount").setMaster("local[2]")
官方的解释:

********自己操作********
1.运行Scala程序之前,先将nc服务器启动
[root@bigdata111 sbin]# nc -l 1234
2.Scala代码:
package streamingExamples
import org.apache.spark.SparkConf
import org.apache.spark.streaming.StreamingContext
import org.apache.spark.streaming.Seconds
import org.apache.spark.storage.StorageLevel
import org.apache.log4j.Logger
import org.apache.log4j.Level
/**
* 知识点:
* 1.创建StreamingContext 核心:DStream 离散流
* 2.DSteam的表现形式就是RDD,对二者的操作是一样的
* 3.使用DStream把连续的数据流变成不连续的RDD
* Spark Streaming最核心的内容
*/
object MyNetworkWordCount {
def main(args: Array[String]): Unit = {
//下面的两行代码定义日志级别,可以减少打印出来的日志
Logger.getLogger("org.apache.spark").setLevel(Level.ERROR)
Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF)
//一、创建运行时的环境
//保证CPU的核数大于等于2,"local[2]"表示开启两个线程
//一个线程用于读取数据,一个线程用于计算处理数据
val conf=new SparkConf().setMaster("local[2]").setAppName("MyNetworkWordCount")
//二、定时采样
//因为SparkStreaming是将连续的数据流变成不连续的RDD,所以就是定时采样。
//接收两个参数,其中:Seconds(3)是采样时间间隔,这里就是3秒
val ssc=new StreamingContext(conf,Seconds(3))
//三、创建DStream,从netcat服务器上读取数据
//接收三个参数:地址,端口号,和RDD里缓存的位置一致(一般取默认值即可)
val lines=ssc.socketTextStream("192.168.212.111", 1234, StorageLevel.MEMORY_ONLY)
//四、分词
val words=lines.flatMap(_.split(" "))
//五、计数
val wordcount=words.map((_,1)).reduceByKey(_+_)//六、打印
wordcount.print()
//注意:因为Spark Streaming程序是流式处理程序,所以可以不用关闭此程序
//七、启动StreamingContext进行计算
ssc.start()
//八、等待任务结束
ssc.awaitTermination()
}
}
3.运行此程序

4.现在往服务器写数据:
![]()
5.查看结果:

浙公网安备 33010602011771号