在win10环境下运行spark streaming中的NetworkWordCount

NetworkWordCount

测试spark streaming wordcount,在学习streaming时候官方教程中有个NetworkWordCount栗子,通过TCP套接字连接,从流数据中创建一个DStream,然后进行处理,时间窗口自己定义,但是一般都是在linux中测试。因为我的spark环境搭建在win中,所以接下来将在win10系统中对其进行实现
首先通过scala在idea中编写spark streaming代码,并构建DStream,对获取得到的流数据进行处理。

package day01
import org.apache.spark.SparkConf
import org.apache.spark.streaming.{Seconds, StreamingContext}
object Streaming {
    def main(args: Array[String]): Unit = {   
        //1、初始化Spark配置信息    
        val sparkConf = new SparkConf().setAppName("sparkStreaming").setMaster("local[*]")  
        
        //2、初始化SparkStreamingContext    
        val ssc = new StreamingContext(sparkConf,Seconds(10))    
        
        //3、通过监控窗口创建DStream,读进来的数据为一行行的    
        val lineStreams = ssc.socketTextStream("localhost",9999)    
        
        //将每一行数据进行切分,形成一个个单词    
        val wordStreams = lineStreams.flatMap(line=>line.split(" "))   
        
        //将单词映射成元组(word,1)    
        val wordAndOneStreams = wordStreams.map((_,1))    
        
        //将相同的单词次数做统计   
        val wordAndCountStreams = wordAndOneStreams.reduceByKey(_+_)   
        
        //打印    
        wordAndCountStreams.print()    
        
        //启动SparkStreamingContext    
        ssc.start()   
        
        //Drvier等待采集器的执行    
        ssc.awaitTermination()  
    }
}

运行程序会打印出很多INFO和WARN信息,这对我们的实时流数据展示很不友好。在win10环境下运行spark streaming中的NetworkWordCount_第1张图片
通过上述代码输出截图可以看出,使用的是log4j.properties文件,

Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties

所以在spark安装目录下,即…\spark-2.1.1-bin-hadoop2.7\conf文件中找到log4j.properties.template文件,并把其移动在idea中项目文件中,重命名为log4j.properties文件,并修改其打印级别,就是把WARN和INFO修改成ERROR即可。
在win10环境下运行spark streaming中的NetworkWordCount_第2张图片在win10环境下运行spark streaming中的NetworkWordCount_第3张图片
再运行会发现输出中的INFO和WARN日志没了但是还是存在新的错误,根据错误提示发现是代码中编写的端口号9999不存在,导致无法连接获取数据。
在win10环境下运行spark streaming中的NetworkWordCount_第4张图片
采用netcat作为数据数据服务器,创建9999窗口,并往里面传输数据。所以:

  • 下载necat:https://eternallybored.org/misc/netcat/下载netcat
  • 安装,将解压好的net64.exe拷贝到C:\window下。
    在cmd中输入nc64 -l -p 9999命令创建9999端口(linux环境下使用nc -lk 9999),并输入以空格划分的字符串
a s d f g h h g f a s d f g h j

在win10环境下运行spark streaming中的NetworkWordCount_第5张图片
在idea中运行程序,获取到本机中9999端口的流式数据,并对其进行切分统计,输出结果如图所示:
在win10环境下运行spark streaming中的NetworkWordCount_第6张图片

你可能感兴趣的:(spark)