Spark Streaming 单词计数
Receiver
从数据源接收数据,然后把数据存储在内存中供spark streaming使用,在本地运行spark streaming不能设置master为local或者local[1],此时运行的线程只有一个,因为需要一个线程去运行Receiver接收数据,因此,就没有线程去处理数据了
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | def main(args: Array[String]) { val conf = new SparkConf() conf.setAppName( "SparkStreamDemo" )<br> // 不能使用local或者local[1],k必须大于1,准确的说是大于Receiver的数量 conf.setMaster( "local[*]" ) val sc = new SparkContext(conf) // 创建StreamingContext 第二个参数是多长时间产生一个RDD val ssc = new StreamingContext(sc, Seconds( 1 )) // 创建DStream val lines = ssc.socketTextStream( "m1" , 9050 ); val wordCounts = lines.flatMap(_.split( " " )).map((_, 1 )).reduceByKey(_+_) wordCounts.print() // 启动spark streaming ssc.start() // 等待计算结束 ssc.awaitTermination() } |
使用nc命令向m1 9050端口发送数据
如果nc命令不存在,首先安装nc命令
1、sudo yum list nc,发现nc命令在nc.x86_64中
2、安装nc, sudo yum -y install nc.x86_64
1 | nc -lk 9050 |
然后一直输入数据,就可以看到控制台的数据输出
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步