Spark Streaming 基础篇

一、Spark Streaming 简介

Spark Streaming是核心Spark API的扩展,可实现可扩展高吞吐量可容错的实时数据流处理。数据可以从诸如Kafka,Flume,Kinesis或TCP套接字等众多来源获取,并且可以使用由高级函数(如map,reduce,join和window)开发的复杂算法进行流数据处理。最后,处理后的数据可以被推送到文件系统,数据库和实时仪表板。而且,您还可以在数据流上应用Spark提供的机器学习和图处理算法。
在这里插入图片描述

二、Spark Streaming 的特点

在这里插入图片描述
(1)易用性:集成在Spark中

(2)容错性:底层也是RDD,RDD本身具备容错机制

(3)支持多种语言:Java Scala Python

三、Spark Streaming 的内部结构

在内部,它的工作原理如下:

Spark Streaming接收实时输入数据流,并将数据切分成批,然后由Spark引擎对其进行处理,最后生成“批”形式的结果流。

在这里插入图片描述
Spark Streaming将连续的数据流抽象为discretizedstreamDStream
在内部,DStream 由一个RDD序列表示

四、开发小程序NetworkWordCount

注意:执行本程序,必须确保虚拟机CPU核数大于2
在这里插入图片描述

(1)由于在本案例中需要使用netcat网络工具,所以需要先安装。
在虚拟机端口输入命令:yum install nc
在这里插入图片描述
(2)启动netcat数据流服务器,并监听端口:1234

命令:nc -l 1234
在这里插入图片描述
(3)编写程序代码

import org.apache.spark.SparkConf
import org.apache.spark.storage.StorageLevel
import org.apache.spark.streaming.{Seconds, StreamingContext}

/**
  * 知识点:
  * 1、创建StreamingContext  核心:DStream 离散流
  *
  * 2、DStream的表现形式:就是RDD
  *
  * 3、使用DStream把连续的数据流变成不连续的RDD
  *
  * Spark Streaming 最核心的内容
  */
object MyNetworkWordCount {
  def main(args: Array[String]): Unit = {
    import org.apache.log4j.Logger
    import org.apache.log4j.Level
    Logger.getLogger("org.apache.spark").setLevel(Level.ERROR)
    Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF)

    // 保证CPU的核数大于等于2   local[2]代表开启两个线程
    val conf = new SparkConf().setAppName("MyNetworkWordCount").setMaster("local[2]")

    //接收两个参数,第一个conf,第二个是采样时间间隔
    //spark streaming把连续的数据流变成不连续的RDD,所以就是定时采样 每隔3秒
    val ssc = new StreamingContext(conf,Seconds(3))

    //创建DStream 从netcat服务器上接收数据
    val lines = ssc.socketTextStream("192.168.1.121",1234,StorageLevel.MEMORY_ONLY)

    val words = lines.flatMap(_.split(" "))

    val wordCount = words.map((_,1)).reduceByKey(_ + _)

    wordCount.print()

    ssc.start()  //启动StreamingContext进行计算
    ssc.awaitTermination()   //等待任务结束
  }

}

注意:

//local[2] 代表开启两个线程
val sparkConf = 
new SparkConf().setAppName("NetworkWordCount").setMaster("local[2]")

官方的解释:
在这里插入图片描述
(4)执行程序测试

在虚拟机命令行输入测试单词:(随便输入几个单词就行)
在这里插入图片描述
采集结果:
在这里插入图片描述

注意:如果程序运行时,log 日志太多,可以将 spark conf 目录下的 log4j 文件里面的日志级别改成WARN

(5) WordCount程序解析

1)Discretized Stream 是 Spark Streaming 的基础抽象,代表持续性的数据流和经过各种 Spark 原语操作后的结果数据流。在内部实现上,DStream 是一系列连续的 RDD 来表示。每个 RDD 含有一段时间间隔内的数据,如下图:
在这里插入图片描述
2)对数据的操作也是按照 RDD 为单位来进行的
在这里插入图片描述
3)计算过程由 Spark engine 来完成
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值