在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信息,这对我们的实时流数据展示很不友好。在这里插入图片描述
通过上述代码输出截图可以看出,使用的是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即可。
在这里插入图片描述在这里插入图片描述
再运行会发现输出中的INFO和WARN日志没了但是还是存在新的错误,根据错误提示发现是代码中编写的端口号9999不存在,导致无法连接获取数据。
[外链图片转存失败(img-Qf4Ko7KA-1567518561481)(en-resource://database/820:1)]
采用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

在这里插入图片描述
在idea中运行程序,获取到本机中9999端口的流式数据,并对其进行切分统计,输出结果如图所示:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学渣渣_宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值