Spark整理-名词解释-RDD

Spark系列:

名词解释-RDD
RDD: Spark基本的计算单元,一种抽象的数据结构。弹性分布式数据集,是一种内存抽象,可以理解为一个大数组,数组的元素是RDD的分区Partition,分布在集群上
RDD是Spark的最基本抽象,是对分布式内存的抽象使用,实现了以操作本地集合的方式来操作分布式数据集的抽象实现,代表一个不可变(只读)、可分区、里面的元素可并行计算的集合
弹性指RDD是一个可容错的数据集;

理解:
Ø 想象成一个大的数组,里面包含元素,数组被切分成partion放在不同节点上,还可以看成是特殊的scala 集合RDD可以被抽象地理解为一个大的数组(Array),但是这个数组是分布在集群上的。
可以简单的把RDD理解成一个提供了许多操作接口的数据集合,和一般数据集不同的是,其实际数据分布存储于一批机器中(内存或磁盘中)。

弹性如何理解?
所谓“弹性”,一种简单解释是指RDD是横向多分区的,纵向当计算过程中内存不足时可刷写到磁盘等外存上,可与外存做灵活的数据交换;而另一种个人更偏向的解释是RDD是由虚拟数据结构组成,并不包含真实数据本体,RDD使用了一种“血统”的容错机制,在结构更新和丢失后可随时根据血统进行数据模型的重建。


分布式如何理解?
简单说就是数据存放到不同机器上,1个Rdd=多个Partition,Parition就是分区,Paritition本质上只是一部分数据,它和Task是一一对应的
就是可以分布在多台机器上进行并行计算


数据集如何理解? 你以为就是简单的一堆数据吗?答案是否定
,RDD可以理解为“数据+对数据操作”,RDD的基本单位是partition,以及每个分片的操作函数,也就是算子。当然了,RDD还“记录”着自身的血缘关系,对parent
RDD的依赖,官方叫“lineage
一组只读的、可分区的分布式数据集合,集合内包含了多个分区。分区依照特定规则将具有相同属性的数据记录放在一起,每个分区相当于一个数据集片段。


读如何理解? 只读:状态不可变,不能修改


不变如何理解?
一个RDD就是一个分布式对象集合,本质上是一个只读的分区记录集合,每个RDD可以分成多个分区,每个分区就是一个数据集片段,并且一个RDD的不同分区可以被保存到集群中不同的节点上,从而可以在集群中的不同节点上进行并行计算。RDD提供了一种高度受限的共享内存模型,即RDD是只读的记录分区的集合,不能直接修改,只能基于稳定的物理存储中的数据集来创建RDD,或者通过在其他RDD上执行确定的转换操作(如map、join和groupBy)而创建得到新的RDD。
immutable意味着RDD是不可变的,只读的。前面提到Spark会追踪每个文件分片的历史,当某一个文件分片损坏或丢失时,Spark会根据该文件分片所需的文件重新计算、创建该分片。
Immutable对追踪应用到数据集上的所有操作很有必要,它提供了维护一个RDD的线性链的能力。 一旦产生就不能被改变.


如何理解分区?
—解决数据怎么存 分区就是依照特定规则,将具有相同属性的数据记录放在一起。每个分区相当于一个数据集片段.

在Spark中,RDD被表示为对象,通过这些对象上的方法(或函数)调用转换。Worker是长时间运行的进程,将RDD分区以Java对象的形式缓存在内存中.用户执行RDD操作时会提供参数,比如map传递一个闭包(closure,函数式编程中的概念)。Scala将闭包表示为Java对象,如果传递的参数是闭包,则这些对象被序列化,通过网络传输到其他节点上进行装载。
RDD也是Spark中核心的数据结构,它表示已被分区、不可变的并能够被并行操作的数据集合,不同的数据集格式对应不同的RDD实现.

总结:
1.是对分布式内存的抽象.
2.对于计算数据的基本抽象,代表一个不可变、可分区、可并行计算、可容错的集合,实现了以操作本地集合的方式来操作分布式数据集的抽象实现。
3.一种数据结构,一种分布式容器,每个容器都有很多的分区,一般情况下每个分区在不同的机器上.

源码部分:
RDD存储数据吗
事实上 RDD 只是数据集的抽象,分区内部并不会存储具体的数据。Partition 类内包含一个 index 成员,表示该分区在 RDD 内的编号,通过 RDD 编号+分区编号可以确定该分区对应的唯一块编号,再利用底层数据存储层提供的接口就能从存储介质(如:HDFS、Memory)中提取出分区对应的数据。(RDD是一个只读的有属性的数据集。属性用来描述当前数据集的状态,数据集是由数据的分区(partition)组成,并(由block)映射成真实数据)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总的来说,对于每个RDD都包含五部分信息,即数据分区的集合,能根据本地性快速访问到数据的偏好位置,依赖关系,计算方法,是否是哈希/范围分区的元数据。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stay_running

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值