RDD是分布式弹性数据集。
RDD有五大特性:
- 一组分区,每个RDD都会被分为多个分区,这些分区运行在集群的不同节点上,分区数决定并行计算的数量。
- 一个计算每个分区的函数,就是计算逻辑。
- RDD之间的依赖关系,就是血缘关系。
- 一个分区器,即RDD的分片函数,控制分区的数据流向,只有key-value类型的算子才有分区器。
- 一个列表,存储存取每个分区的优先位置,移动数据不如移动计算,除非资源不够。
RDD的弹性主要体现在计算弹性,存储弹性,任务弹性,数据位置弹性
- 计算弹性和任务弹性:当Task和State失败了,可以基于spark的血缘关系进行重试,而且只需要计算失败的部分。
- 存储弹性:自动进行内存和磁盘切换,当内存不够了,自动存储到磁盘。
- 数据位置弹性:数据既可以存储在内存中,也可以存储在磁盘中,比如Checkpoint,保存在HDFS中,可以对数据进行复用。
数据位置弹性