DStream是类似于RDD概念,是对数据的抽象封装。它是一序列的RDD,事实上,它大部分的操作都是对RDD支持的操作的封装,不同的是,每次DStream都要遍历它内部所有的RDD执行这些操作。它可以由StreamingContext通过流数据产生或者其他DStream使用map方法产生(与RDD一样)
time属性对DStream而言非常重要,DStream里面的RDD就是通过某个时间间隔产生的,而且以产生的时间为索引。所以在访问DStream的某个RDD时,实际上是访问它在某个时间点的RDD。




  1. /**
    * A Discretized Stream (DStream), the basic abstraction in Spark Streaming, is a continuous
    * sequence of RDDs (of the same type) representing a continuous stream of data (see
    * org.apache.spark.rdd.RDD in the Spark core documentation for more details on RDDs).
    * DStreams can either be created from live data (such as, data from TCP sockets, Kafka, Flume,
    * etc.) using a [[org.apache.spark.streaming.StreamingContext]] or it can be generated by
    * transforming existing DStreams using operations such as `map`,
    * `window` and `reduceByKeyAndWindow`. While a Spark Streaming program is running, each DStream
    * periodically generates a RDD, either from live data or by transforming the RDD generated by a
    * parent DStream.
    *
    * This class contains the basic operations available on all DStreams, such as `map`, `filter` and
    * `window`. In addition, [[org.apache.spark.streaming.dstream.PairDStreamFunctions]] contains
    * operations available only on DStreams of key-value pairs, such as `groupByKeyAndWindow` and
    * `join`. These operations are automatically available on any DStream of pairs
    * (e.g., DStream[(Int, Int)] through implicit conversions when
    * `org.apache.spark.streaming.StreamingContext._` is imported.
    *
    * DStreams internally is characterized by a few basic properties:
    * - A list of other DStreams that the DStream depends on
    * - A time interval at which the DStream generates an RDD
    * - A function that is used to generate an RDD after each time interval
    */

    abstract class DStream[T: ClassTag] (
    @transient private[streaming] var ssc: StreamingContext
    ) extends Serializable with Logging {
重要属性:
  1. // =======================================================================
    // Methods that should be implemented by subclasses of DStream
    // =======================================================================
    /** Time interval after which the DStream generates a RDD */
    def slideDuration: Duration
    /** List of parent DStreams on which this DStream depends on */
    def dependencies: List[DStream[_]]
    /** Method that generates a RDD for the given time */
    def compute (validTime: Time): Option[RDD[T]]
当前已经产生了的RDD,以产生的时间为索引
  1. // =======================================================================
    // Methods and fields available on all DStreams
    // =======================================================================

    // RDDs generated, marked as private[streaming] so that testsuites can access it
    @transient
    private[streaming] var generatedRDDs = new HashMap[Time, RDD[T]] ()
为某个时间点产生一个RDD
  1. /**
    * Get the RDD corresponding to the given time; either retrieve it from cache
    * or compute-and-cache it.
    */
    private[streaming] def getOrCompute(time: Time): Option[RDD[T]] = {














spark streaming 2: DStream的更多相关文章

  1. 53、Spark Streaming:输入DStream之Kafka数据源实战

    一.基于Receiver的方式 1.概述 基于Receiver的方式: Receiver是使用Kafka的高层次Consumer API来实现的.receiver从Kafka中获取的数据都是存储在Sp ...

  2. Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Spark Streaming简介 1.1 概述 Spark Streaming 是Spa ...

  3. Spark Streaming

    Spark Streaming Spark Streaming 是Spark为了用户实现流式计算的模型. 数据源包括Kafka,Flume,HDFS等. DStream 离散化流(discretize ...

  4. Spark学习之Spark Streaming

    一.简介 许多应用需要即时处理收到的数据,例如用来实时追踪页面访问统计的应用.训练机器学习模型的应用,还有自动检测异常的应用.Spark Streaming 是 Spark 为这些应用而设计的模型.它 ...

  5. Spark Streaming 实现思路与模块概述

    一.基于 Spark 做 Spark Streaming 的思路 Spark Streaming 与 Spark Core 的关系可以用下面的经典部件图来表述: 在本节,我们先探讨一下基于 Spark ...

  6. .Spark Streaming(上)--实时流计算Spark Streaming原理介

    Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍 http://www.cnblogs.com/shishanyuan/p/474 ...

  7. spark streaming的理解和应用

    1.Spark Streaming简介 官方网站解释:http://spark.apache.org/docs/latest/streaming-programming-guide.html 该博客转 ...

  8. 实时流计算Spark Streaming原理介绍

    1.Spark Streaming简介 1.1 概述 Spark Streaming 是Spark核心API的一个扩展,可以实现高吞吐量的.具备容错机制的实时流数据的处理.支持从多种数据源获取数据,包 ...

  9. Spark Streaming之一:整体介绍

    提到Spark Streaming,我们不得不说一下BDAS(Berkeley Data Analytics Stack),这个伯克利大学提出的关于数据分析的软件栈.从它的视角来看,目前的大数据处理可 ...

随机推荐

  1. O018、理解 Keystone 核心概念

    参考https://www.cnblogs.com/CloudMan6/p/5365474.html   作为OpenStack的基础支持服务,Keystone做了下面几件事情:       1.管理 ...

  2. Maven将java打包成jar并且运行笔记

    Maven项目打包成jar并且运行笔记 首先创建一个maven项目 运行成功后,有两种方式将项目进行打包. 第一种方式: 在IDEA编辑器中maven项目进行打包: 这里显示jar包中没有主清单属性, ...

  3. Scala新版本学习(1):

    1.进官网:https://www.scala-lang.org/ 上面就是进入Scala社区后的一个画面,官方对Scala的简单介绍是:Scala将面向对象和函数式编程集合在一个简洁的高级语言中,S ...

  4. java知识点复习(1):

    1.java整形变量078:在java数字里数字表达式前面加上0表示8进制,因为8进制里表示数字只有0-7,所以这里的表达式有错误.相对而言,077就是合法的,转换成10进制就是63(7*8+7=63 ...

  5. Python基础教程之dict和set

    1. dict Python中的dict等于js中的 map ,使用键-值(key-value)存储,具有极快的查找速度. 如果 我们要根据同学的姓名去查找他的成绩在不用dict的情况下.就需要两个l ...

  6. 【项目构建工具】 Gradle笔记1

    一.Gradle简介 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XM ...

  7. 08ServletContext

    1. 概念 代表整个web应用,可以和程序的容器(服务器)来通信 2. 获取 1. 通过request对象获取 request.getServletContext();2. 通过HttpServlet ...

  8. 怎么去掉zencart模板网址后面的zenid=数字这个东西

    搜索引擎优化后第一次进入商店网址URL后面会出现zenid=XXXX 如:http://afish.cnblogs.com/zencart-zenid.html?zenid=tbisz675099db ...

  9. php禁止个别ip访问网站

    PHP禁止个别IP访问自己的网站,可以看看下面的方法. function get_ip_data(){ $ip=file_get_contents("http://ip.taobao.com ...

  10. yield from语法

    yield from 是在Python3.3才出现的语法.所以这个特性在Python2中是没有的. yield from 后面需要加的是可迭代对象,它可以是普通的可迭代对象,也可以是迭代器,甚至是生成 ...