Spark streaming 实时计算框架基本练习----词频统计

   介绍:Spark是一个类似于MapReduce的分布式计算框架,其核心是弹性分布式数据集,提供了比MapReduce更丰富的模型,可以在快速在内存中对数据集进行多次迭代,以支持复杂的数据挖掘算法和图形计算算法。Spark Streaming是一种构建在Spark上的实时计算框架,它扩展了Spark处理大规模流式数据的能力。
 


文章目录

  • 一、任务概述
  • 二、window操作
  • 三、虚拟机操作
  • 效果展示

一、任务概述

 windown与虚拟机连接实现实时计算词频统计

虚拟机---输入

window---计算

二、window操作

1.引入Streaming

直接创建maven工程,在pom文件下从apache直接添加依赖Streaming

示例代码如下

  <dependency>
  <groupId>org.apache.spark</groupId>
  <artifactId>spark-streaming_2.12</artifactId>
  <version>2.4.5</version>
</dependency>

2,编写与虚拟机连接与实时计算的代码

详细代码如下,每一步都非常详细:(开发工具IDEA)也可用其他

  import org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream}
  import org.apache.spark.streaming.{Seconds, StreamingContext}
  import org.apache.spark.{SparkConf, SparkContext}
  object jikou{
    //newValues 表示当前批次汇总成的(word,1)中相同单词的所有1
    //runningCount 表示历史的所有相同key的value总和
    def updateFunction(newValues: Seq[Int], runningCount: Option[Int]): Option[Int] = {
      val newCount =runningCount.getOrElse(0)+newValues.sum
      Some(newCount)
    }
    def main(args: Array[String]): Unit = {
      //1.创建SparkConf对象 设置appName和master地址  local[2] 表示本地采用2个线程运行任务
      val sparkConf: SparkConf = new SparkConf().setAppName("WordCount").setMaster("local[2]")
      //2.创建SparkContext对象,它是所有任务计算的源头,它会创建DAGScheduler和TaskScheduler
      val sc: SparkContext = new SparkContext(sparkConf)
      //3.设置日志级别helloo'

      sc.setLogLevel("WARN")
      //4.创建StreamingContext,需要2个参数,一个是SparkContext,一个是批处理的时间间隔
      val ssc: StreamingContext = new StreamingContext(sc,Seconds(5))
      //5.配置检查点目录,使用updateStateByKey方法必须配置检查点目录
      ssc.checkpoint("./")
      //6.对接socket数据创建DStream对象,需要socket服务的地址、端口号及存储级别(默认的)
      val dstream: ReceiverInputDStream[String] = ssc.socketTextStream("自己虚拟机的IP地址",8888)
      //7.按空格进行切分每一行,并将切分的单词出现次数记录为1
      val wordAndOne: DStream[(String, Int)] = dstream.flatMap(_.split(" ")).map(word =>(word,1))
      //8.调用updateStateByKey操作,统计单词在全局中出现的次数
      var result: DStream[(String, Int)] = wordAndOne.updateStateByKey(updateFunction)
      //9.打印输出结果
      result.print()
      //10.开启流式计算
      ssc.start()
      //11.让程序一直运行,除非人为干预停止
      ssc.awaitTermination()
    }


}

三.虚拟机操作

首先需要下载nc

命令:yum install nc

 打开虚拟机终端直接输入: nc -lk 8888

然后输入你要统计的单词就可以啦!

注意:window上IP地址一定要和虚拟机上一致


效果图片展示!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spark Streaming 是一个基于 Apache Spark实时计算框架,它可以处理实时数据流,并将其转换为批处理数据进行分析。Spark Streaming 支持多种数据源,包括 Kafka、Flume、Twitter 和 HDFS 等。它提供了高可靠性、高吞吐量和低延迟的实时数据处理能力,适用于各种实时数据处理场景,如实时监控、实时分析和实时预测等。Spark Streaming 还提供了丰富的 API 和工具,方便用户进行数据处理和分析。 ### 回答2: Spark Streaming是一个用于实时计算框架,它是Apache Spark生态系统中的一部分。Spark Streaming使得我们能够在大规模分布式环境中进行实时流数据的处理和分析,它可以处理多种类型的数据,例如网络数据、Web日志、传感器数据和社交媒体数据。 Spark Streaming通过将实时数据流分成小批次数据,并在每个批次中进行数据处理来实现实时计算。这种分批处理的方法称为微批处理,每个批次数据的大小由用户控制,典型的大小为1秒到数秒之间。这种方法使得Spark Streaming能够在高效保证数据实时性的同时,还能利用大部分Spark的批处理能力,从而提高数据处理的效率。 Spark Streaming通过将实时数据流转换成DStream(离散数据流)来表示数据流,DStream是一种抽象的数据结构,在分布式计算时可以对其进行高效的并行计算Spark Streaming提供了丰富的操作和函数来对DStream流进行处理,包括数据过滤、数据转换、聚合和数据输出等。同时,Spark Streaming还支持多种数据源,例如Kafka、Flume、Twitter和TCP socket等。 在实际应用中,Spark Streaming被广泛用于实时数据处理和流分析,例如实时日志分析、实时交易处理、实时预测和实时推荐等场景中。因为它是在Spark生态系统中构建的,Spark Streaming可以与Spark的其他组件良好地融合,例如Spark SQL 和 MLlib等。 总之,Spark Streaming是一个强大的实时计算框架,可以帮助企业快速实现实时数据处理和分析,并将运算结果实时输出到目标系统中,为企业决策提供有效的支持。 ### 回答3: Spark Streaming是Apache Spark生态系统中的实时计算引擎,是一种处理高速数据流的分布式流处理系统,基于Spark引擎构建而成,它能够处理从各种来源(如Kafka、Flume、Twitter等)传入的实时大规模数据,将流数据实时处理并输出到文件系统、数据库和实时仪表盘等目标中。Spark Streaming引擎提供了一种简单且高效的编程模型,可以使用Scala、Java和Python等语言进行开发,同时引擎还提供了建立高可用的集群模式和扩展性强的分布式环境。 在Spark Streaming中,流可以被表示为弹性分布式数据集(RDD),可以使用类似Spark核心API的各种函数对流进行操作,例如map、reduce、join等,甚至支持窗口函数和时间处理, 这使得开发者可以使用大多数Spark核心API提供的功能,更方便地完成复杂的实时计算任务。另外,Spark Streaming还支持完全原子的事务操作,允许将数据引入到一个可重用的中间件数据存储中进行处理,同时也可以对流数据进行持久化保存和检查点。这给实时计算引擎带来了更好的容错性和恢复能力。 总之,Spark Streaming框架不仅提供了高规格的流式处理构架,而且也提供了支持机器学习和图计算的特性,这使得业务逻辑在一个平台内实现,而不需要降低数据“顺利度”,该构架扩展性强,可应用于大数据分析实时处理场景。使得Spark Streaming成为了处理大量的实时数据,进行特定的计算和分析之后再加入数据流的必要工具。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值