主要为了解决3个疑问
rdd的弹性表现在哪 ?
什么是spark lazy 特性 ?
spark lazy evaluation 的好处都有什么 ?
rdd的弹性表现在哪
RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。那么为什么叫弹性分布式?分布式好理解,这里不谈;那什么叫弹性?

RDD的弹性和RDD的容错机制(通过DAG重算节点失败导致的丢失数据)有着比较强的关联,可以说是RDD的几个特性中的重要一个;以下摘抄

RDD的弹性表现:
1、弹性之一:自动的进行内存和磁盘数据存储的切换;
2、弹性之二:基于Lineage的高效容错(第n个节点出错,会从第n-1个节点恢复,血统容错);
3、弹性之三:Task如果失败会自动进行特定次数的重试(默认4次);
4、弹性之四:Stage如果失败会自动进行特定次数的重试(可以只运行计算失败的阶段);只计算失败的数据分片;
5、checkpoint和persist
6、数据调度弹性:DAG TASK 和资源 管理无关
7、数据分片的高度弹性(人工自由设置分片函数),repartition

既然聊到弹性了,那就讲解一下最重要的容错特性
考虑到核心的容错机制,必然得县提到rdd之间的依赖关系!

什么是窄依赖和宽依赖?
RDD 的 Transformation 函数中又分为窄依赖(narrow dependency)和宽依赖(wide dependency)的操作:

窄依赖(narrow dependencies): 子RDD的每个分区依赖于常数个父分区(即与数据规模无关)
窄依赖的函数有:map, filter, union, join(父RDD是hash-partitioned ), mapPartitions, mapValues
宽依赖(wide dependencies):父RDD被多个子RDD所用。例如,map产生窄依赖,而join则是宽依赖(除非父RDD被哈希分区)
宽依赖的函数有:groupByKey, join(父RDD不是hash-partitioned ), partitionBy
————————————————
版权声明:本文为CSDN博主「哈士奇说喵」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/MrLevo520/article/details/100079438