大数据全系列 教程
1869个小节阅读:467.2k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
需求:使用nc(netcat)命令在node1向9999端口不断的发送数据,通过SparkStreaming读取端口数据并统计不同单词出现的次数。
xxxxxxxxxx
package com.itbaizhan.streaming
import org.apache.spark.SparkConf
import org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream}
import org.apache.spark.streaming.{Seconds, StreamingContext}
object StreamingWordCount {
def main(args: Array[String]): Unit = {
//1.初始化SparkConf类的对象
val conf: SparkConf = new SparkConf()
.setMaster("local[*]")
.setAppName("StreamingWordCount")
//2.创建StreamingContext对象
val ssc = new StreamingContext(conf, Seconds(5))
//3.通过监控node1的9999端口创建DStream对象
val lines: ReceiverInputDStream[String] =
ssc.socketTextStream("node1", 9999)
//4.将每一行数据做切分,形成一个个单词
val wordsDS: DStream[String] = lines.flatMap(_.split(" "))
//5.word=>(word,1)
val wordOne: DStream[(String, Int)] = wordsDS.map((_, 1))
//6.将相同的key的value做聚合加
val wordCount: DStream[(String, Int)] = wordOne.reduceByKey(_ + _)
//7.打印输出
wordCount.print()
//8.启动
ssc.start()
//9.等待执行停止
ssc.awaitTermination()
}
}
测试
在node1上
xxxxxxxxxx
[root@node1 ~]# nc -lk 9999
在IDEA中运行程序
在node1上
xxxxxxxxxx
[root@node1 ~]# nc -lk 9999
A B A C
A D A E
H A D E
查看IDEA控制台