Apache spark Spark中RDD和批次之间的差异?

Apache spark Spark中RDD和批次之间的差异?,apache-spark,spark-streaming,rdd,Apache Spark,Spark Streaming,Rdd,RDD是跨集群节点分区的元素集合。它是核心组件和抽象 批处理:SparkStreaming API只是将数据分为批处理,这也会对相同的流对象/元素集合进行批处理。根据需求,在基于时间的表单批处理窗口和基于密集在线活动的批处理窗口中定义一组批处理 Rdd和批次之间到底有什么区别?一个批次本质上就是一个Rdd,但是在流媒体中,您通常不是在Rdd上操作,而是在提供上述基于时间和窗口的功能的数据流上操作。您必须使用foreachRDD显式深入到RDD 数据流是描述流作业的抽象。在运行时,数据流被转换为R

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

批处理:SparkStreaming API只是将数据分为批处理,这也会对相同的流对象/元素集合进行批处理。根据需求,在基于时间的表单批处理窗口和基于密集在线活动的批处理窗口中定义一组批处理


Rdd和批次之间到底有什么区别?

一个批次本质上就是一个Rdd,但是在流媒体中,您通常不是在Rdd上操作,而是在提供上述基于时间和窗口的功能的数据流上操作。您必须使用foreachRDD显式深入到RDD


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

RDD
s和批处理本质上是不同的,但在Spark中是相关的。 如问题中所述,
RDD
s是Spark的基本概念,因为它们构成了Spark中分布式计算的基础数据结构

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

在Spark Streaming中,“批处理”是在
batchInterval
时间内收集数据的结果。数据以“块”的形式收集,块的大小由
spark.streaming.blockInterval
config参数决定

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


如果说批次和
RDD
s是一回事,那就不正确了。Spark Streaming批数据在提交给Spark Core进行处理时成为RDD。

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

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

从高层次的角度来看,数据流提供了与RDD相同的操作,但它们提供了与时间相关的附加方法(如滑动窗口)


PS:我现在看到了youtube的链接。我想这是最好的答案-它完全解释了您想知道的内容:)

您可以在我的Spark Summit 2015演讲中看到详细的解释:我参加了演讲:)因此一个批次变成一个RDD,而块间隔只与分区相关?@MariusSoutier:-)是的。除了直接卡夫卡流,其中每个卡夫卡分区变成1火花分区。这里为什么批次进入图像,乳清不被认为是RDD。这意味着RDD不支持流式处理?我认为批货是RDD吗?RDD的顺序是数据流?