Spark Streaming:RDD,Batch, Dstream, Partitiion到底是什么

https://spark.apache.org/docs/2.2.0/streaming-programming-guide.html

其实spark doc写的挺好,我这就把他概括一下,写一些让我迷惑的问题点:

 

RDD:RDD就算是spark里最基本的处理单位,算是spark定义的一种数据结构(是分布式的)-------她是Immutable的,一旦生成了,就不能改

 

其实想想也能明白为啥RDD不能修改:处理器之间共享方便:也安全一些,不至于各个core的一个RDD不同步,等等等等

 

经典的图来了

input data 就是输入了, 不停的发啊发啊发啊,,,,,,

第一步: 切成batch

然后Streaming engine就会用一个batch来收集数据,凑够一个batch了就发走了(batch的大小是时间大小), 问题又来了

那batch里是啥?

 

block

batch里也不会直接是数据,batch会有block(熟悉把,就是那个64m的block),block内会接受数据流,当一个block存满了,就去存下一个block,直到batch时间到了。

block的大小(怕我忘了: conf:spark.streaming.blockInterval )

 

RDD

然后这个batch(里面有一些block)就会发送到Spark Engine 生成RDD, 而里面的block就变成的RDD的partition。

所以:

一个batch里只有一个RDD

 

Dstream就简单了,就把他 想象成一堆连续的RDD就行, 没啥特别的

 

RDD = ( 一堆partitions 组成)

Batch = (一堆block组成)

(一堆block) ------->经过spark engine------->(一堆partitions,生成RDD)

 

所以要是说Batch和RDD是一个东西好像也不太对,可能就是进化关系把。。。

所以Spark Streaming里最基本的划分是从batch来划分流生成RDD,所以如果你打算生成window, window必须要是batch interval的整数倍(数据是这么切的啊。。。)

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spark Streaming 是 Apache Spark 提供的一种实时数据处理框架。它将实时数据流划分为一系列离散的小批量数据,然后将这些小批量数据作为 RDD(弹性分布式数据集) 进行处理。Spark Streaming 的核心概念包括: 1. DStream(Discretized Stream):DStream 是 Spark Streaming 的核心抽象,它代表了连续的数据流,由一系列 RDD 组成。DStream 可以从各种数据源中创建,例如 Kafka、Flume、HDFS、Socket 等。 2. 输入源(Input Sources):输入源是 Spark Streaming 从外部获取数据的接口,包括 Kafka、Flume、HDFS、Socket 等。Spark Streaming 支持多种输入源,并且可以扩展自定义输入源。 3. 转换(Transformations):转换是对 DStream 中的数据进行处理和转换的操作,例如 map、reduce、filter 等。转换操作可以基于单个 RDD 进行,也可以基于多个 RDD 进行。 4. 输出操作(Output Operations):输出操作是将处理后的数据写入外部存储介质的操作,例如将结果写入数据库、写入文件、写入 Kafka 等。 5. 时间窗口(Window):时间窗口是将 DStream 中的数据按照时间段进行划分的机制,使得可以对每个时间段内的数据进行处理。通过时间窗口,可以实现累积计算、滑动窗口等操作。 6. 状态更新(Stateful Operations):状态更新是一种可以跨批次(batch)进行的计算操作,它可以使 Spark Streaming 记忆之前的结果并将其用于后续计算。 Spark Streaming 的核心概念提供了一种高度抽象的方式来处理实时数据流,同时提供了丰富的转换操作和输出操作,可以满足各种实时数据处理场景的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值