SparkStreaming入门案例
一、准备工作
- 实验环境:
netcat - 安装nc:
yum install -y nc
二、任务分析
将nc作为服务器端,用户产生数据;启动sparkstreaming案例中的客户端程序,监听服务器端发送过来的数据,并对其数据进行词频统计,即为流式的wordcount入门程序
三、官网案例
-
启动nc作为服务器端,执行:
nc -l -p 6666,并输入测试数据,如图所示:

-
启动客户端,执行:
bin/run-example streaming.NetworkWordCount localhost 6666结果如图所示:

注意):如果要执行本例,必须确保机器 cpu 核数大于 2

四、开发NetWordCount
- 创建maven工程
- 添加maven依赖,即在pom.xml中添加streamming的依赖,如下:
<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming_2.12</artifactId> <version>2.4.8</version> </dependency> - 开发
NetWordCount程序import org.apache.spark.SparkConf import org.apache.spark.storage.StorageLevel import org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream} import org.apache.spark.streaming.{Seconds, StreamingContext} object StreamingTest { def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setMaster("local[2]").setAppName("StreamingTest") val streamingContext = new StreamingContext(sparkConf, Seconds(3)) // 创建DStream对象,并链接到nc服务器端 val ris: ReceiverInputDStream[String] = streamingContext.socketTextStream("niit01", 6666, StorageLevel.MEMORY_AND_DISK) // 采集数据,并处理数据 val ds: DStream[String] = ris.flatMap(_.split(" ")) // 统计单词 val resultDS: DStream[(String, Int)] = ds.map(x => (x, 1)).reduceByKey(_ + _) // 打印结果 resultDS.print() // 启动实时计算 streamingContext.start() // 等待计算结束 streamingContext.awaitTermination() } } - 先在虚拟机上启动nc服务器:
nc -l -p 6666,并输入测试数据,如图:

- 然后运行程序
- 运行结果如下:

注意:程序会一直处于运行状态,等待服务器端发送数据如想停止程序,需要手动去停止。
本文通过一个简单的Spark Streaming案例,介绍如何使用Scala开发实时WordCount程序。首先,介绍了实验环境的准备,包括安装netcat作为服务器端。接着,详细解析了任务,即利用Spark Streaming从nc服务器接收数据并进行词频统计。然后,展示了Spark官方的样例代码,解释了代码逻辑。最后,提供了自己开发的NetWordCount程序,并指导如何运行和查看结果,强调了程序需在多核环境下运行。

被折叠的 条评论
为什么被折叠?



