SparkStreaming入门案例

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、准备工作


  • 实验环境:netcat
  • 安装nc:yum install -y nc

二、任务分析


将nc作为服务器端,用户产生数据;启动sparkstreaming案例中的客户端程序,监听服务器端发送过来的数据,并对其数据进行词频统计,即为流式的wordcount入门程序

三、官网案例


  • 启动nc作为服务器端,执行:nc -l -p 6666,并输入测试数据,如图所示:
    在这里插入图片描述

  • 启动客户端,执行:

    bin/run-example streaming.NetworkWordCount localhost 6666
    

    结果如图所示:
    在这里插入图片描述
    注意)如果要执行本例,必须确保机器 cpu 核数大于 2
    在这里插入图片描述

四、开发NetWordCount


  1. 创建maven工程
  2. 添加maven依赖,即在pom.xml中添加streamming的依赖,如下:
     <dependency>
         <groupId>org.apache.spark</groupId>
         <artifactId>spark-streaming_2.12</artifactId>
         <version>2.4.8</version>
     </dependency>
    
  3. 开发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()
      }
    }
    
  4. 先在虚拟机上启动nc服务器:nc -l -p 6666,并输入测试数据,如图:
    在这里插入图片描述
  5. 然后运行程序
  6. 运行结果如下:
    在这里插入图片描述
    注意程序会一直处于运行状态,等待服务器端发送数据 如想停止程序,需要手动去停止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

IT喂嘟盲

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

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

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

打赏作者

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

抵扣说明:

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

余额充值