SparkStreaming是什么

SparkStreaming概述

SparkStreaming官网简介

1、简介

SparkStreaming作为Spark的核心API的扩展,同时SparkStreaming具有很强大的特性:

1、高扩展性

2、高吞吐性

3、高容错性

4、实时数据处理(micro batch processing)

数据能从多种不同的数据源注入到SparkStreaming,常用的数据源有:

Kafka

Flume

Kenesis

TCP socket

File

同时SparkStreaming提供了许多高级API算子,可以实现底层用复杂的算法处理数据,最后,处理后的数据可以传输到文件系统、数据库、实时报表(仪表盘dashboards),同时我们还可以运用Spark的Machine Learning & 图处理算法来针对DStream进行数据分析,Spark的架构定位图如下:
在这里插入图片描述

SparkStreaming 接受实时输入的数据流然后将数据切分成不同的批次,然后经过Spark引擎将结果数据以batch的形式生成最后的流,示意图如下

在这里插入图片描述
简单的使用代码

object SparkStreamingDemo {
  def main(args: Array[String]): Unit = {

    val conf: SparkConf = new SparkConf().setAppName("sparkStreaming").setMaster("local[2]")

    val ssc = new StreamingContext(conf, Seconds.apply(5))

   //从文件读取配置,Properties可以使用scala中的Source类进行代替
    val properties = new Properties()
    properties.load(this.getClass.getClassLoader.getResourceAsStream("socket.properties"))

    val hostname: String = properties.getProperty("hostname", "localhost")
    val port: Int = properties.getProperty("port", "9999").toInt

    val ds: ReceiverInputDStream[String] = ssc.socketTextStream(hostname, port, StorageLevel.MEMORY_ONLY)

    ds.print()

    //开始计算
    ssc.start()

    //等待计算终止,任务结束才结束
    ssc.awaitTermination()

  }
}

2、初始化StreamingContext

初始化一个StreamingContext是整个SparkStreamingAPI的入口,所以首先得初始化该实例

    import org.apache.spark.streaming._
		//1、从配置进行初始化
    val conf: SparkConf = new SparkConf().setAppName("Streaming Demo").setMaster("local[2]")
    var ssc = new StreamingContext(conf, Seconds(10))

    //2、从SparkContext进行初始化
    val sc = new SparkContext(conf)
    ssc = new StreamingContext(sc,Seconds(10))

    ssc.start()
    //TODO SOMETHING
    ssc.awaitTermination()

    ssc.stop()//手动停止进程,配合开启相关的gentle.stop配置使用

需要被牢记的几个点

  • 一旦一个StreamingContext启动,其它的streaming计算都不能添加到该上下文中
  • 一旦一个StreamingContext被停止,那么它不能重启
  • 一个JVM中在同一时间内只能有一个StreamingContext属于active状态
  • stop()方法会同时stop掉SparkContext,如果仅仅只需要stopStreamingContext,我们需要添加相关的选项参数 stopSparkContext为=>false
  • 一个SparkContext能被用于创建多个StreamingContext实例,只要lastStreamingContext is stoped 但是 SparkContext没有被stop

3、SparkStreaming API抽象DStream

sparkcore的抽象是RDD,SparkSQL的抽象是DataSet、DataFrame,所以SparkStreaming提供了自己的数据结构抽象DStream【离散流】,它表示连续的数据流,DStream由一系列连续的RDD表示,DStream中的每个RDD都包含来自特定时间间隔的数据

在这里插入图片描述

在DStream上的任何操作都可以转换成对基础RDD的操作如下图:

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值