RDD深入讲解

1.RDD的作用

(1)让开发者大大降低开发分布式应用程序的门槛以及提高执行效率(特指和其他框架做对比)

例如:其他框架你要考虑数据的拆分、通信机制、作业挂了如何处理、作业调度、序列化等等。但是这些在RDD中直接通过map、reduce就可以完成了。

2.什么是RDD?

(1)RDD:  Resilient Distributed dataset(弹性  分布式  数据集)

弹性:体现在计算层面,比图数据丢失的一些找回操作

(2)the basic abstraction in spark(他是spark最基础的一个抽象类)

(3)immutable、partitioned of collecttion of elements that can be operated on in parallel:不可变的、可拆分的、可以并行操作的元素的排序分区

(4)一个RDD有多个partition

(5)RDD是一个抽象类,所以它是不能直接使用的(new不出对象),因此我们使用的时候直接使用其子类即可。

(6)Serializable:序列化的目的改善网络的传输,所以它能直接影响整个框架的优劣

3.RDD的五大特性

(1)A list of partition:他是RDD的基本构成,就是一系列分区。

(2)A function for computing each split/partitio:一个计算方法是作用在每个分区上面的。

(3)A list of dependencies on other RDDs:RDD会记录它的依赖 ,为了容错(重算,cache,checkpoint),也就是说在内存中的RDD操作时出错或丢失会进行重算。比如RDD A =》RDD B ==》RDD C,那么C与A直接是有依赖关系的,当我们的某个分区挂掉的时候,spark可以通过我们的依赖关系来恢复这   一个分区。

(4) Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned):可选项,如果RDD里面存的数据是key-value形式,则可以传递一个自定义的Partitioner进行重新分区,例如这里自定义的Partitioner是基于key进行分区,那则会将不同RDD里面的相同key的数据放到同一个partition里面。

(5)Optionally, a list of preferred locations to compute each split on:最优的位置去计算,也就是数据的本地性。  

4.RDD五大特性在源码中的体现 

(1) def compute(split: Partition, context: TaskContext): Iterator[T]  :从这个计算方法中可以看到,传入的是partition和context这正好体现了RDD的第二大特性

(2)def getPartitions: Array[Partition]   :这个方法返回的是一个Partition的数组,这体现了第一大特性。

(3)protected def getDependencies: Seq[Dependency[_]] = deps  :这个方法由子类实现,以返回该RDD如何依赖于父RDDs,这体现了第三大特性。

(4)protected def getPreferredLocations(split: Partition): Seq[String] = Nil   :这个方法传入的是分区,得到的是最佳计算位置,也就是首选位置。体现了第五大特性

(5)@transient val partitioner: Option[Partitioner] = None  :这个方法,可选地覆盖子类来指定它们是如何分区,@transient表示不可序列化。

5.RDD的Partition解读

(1)partition是可以存储在多个地方的(比如DISK,mermory,副本)

(2)在Spark计算中有多少个partitions就有多少个task,一个worker——》多个excutors——》Partitioner

6.面试题谈一下你对RDD的理解

最少讲十分钟,清清楚楚的表述完整!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值