Spark中的RDD和批次之间的区别?

时间:2015-10-30 14:18:44

标签: apache-spark spark-streaming rdd

RDD 是跨群集节点分区的元素集合。它是核心组件和抽象。

批处理: SparkStreaming API只是将数据分成批处理,批处理也是同一个Streaming对象/元素集合。根据要求在基于时间的批处理窗口和基于密集在线活动的批处理窗口形式中定义的一组批次。

Rdd&的区别是什么?准确批量?

3 个答案:

答案 0 :(得分:6)

RDD和批次本质上是不同的,但Spark中的相关内容。 正如问题中所提到的,RDD是一个基本的Spark概念,因为它们构成了Spark中分布式计算的基础数据结构。

RDD[T]是分布在群集中分区上的[T]类型元素的虚拟集合。

在Spark Streaming中,"批次"是batchInterval时间内收集数据的结果。数据收集在'块中,块的大小由spark.streaming.blockInterval config参数确定。

将这些块提交给Spark Core引擎进行处理。每个批处理的块集合变为一个RDD,每个块是一个RDD分区。

说批次与RDD是同一回事是不正确的。当Spark Streaming批处理数据被提交以处理Spark Core时,它将成为RDD。

答案 1 :(得分:0)

一个批处理基本上是一个RDD,但是在Streaming中,您通常不在RDD上运行,而是在提供上述基于时间和窗口的功能的DStream上运行。您必须使用foreachRDD明确地深入到RDD。

DStream是描述流媒体作业的抽象。在运行时,DStream被转换为RDD,因为Spark Streaming在Spark Core之上工作,而Spark只知道如何处理RDD。这就是为什么它不是真正的流处理而是微批处理。

答案 2 :(得分:0)

基本区别在于Spark和Spark Streaming(微批处理)的体系结构。您可能知道,对于离线处理,您不需要Spark Streaming - 这是为了在线处理数据或在其到达时处理数据而创建的,这被视为对小批量数据的连续系列批量计算。

Spark的创建者决定提供一个名为DStreams(离散Streams)的抽象。这些内部表示为到达每个时间步长(例如,0.5秒)的RDD序列 - 它们中的每一个具有流中的数据的一个时间片。在每个时间间隔的开始(例如,0.5秒),创建新批次 - 当新数据到达时,这属于该批次 - 直到它结束增长。

从高层次来看,DStreams提供与RDD相同的操作,但它们提供了与时间相关的其他方法(例如滑动窗口)。

PS:我现在已经看到了youtube链接。我想这是最好的答案 - 它彻底解释了你想知道的事情:)