主页 > 新闻资讯 > Spark RDD Stage:RDD与Stage划分

Spark RDD Stage:RDD与Stage划分

作者:张老师 浏览次数: 2020-02-24 18:20
在Spark框架当中,RDD是核心的抽象概念之一,想要真正弄懂Spark的数据模型,RDD无疑是必须要掌握的重点知识之一,并且其中还涉及到Spark RDD Stage等相关的知识,可以说是重点+难点,今天我们就主要来聊一聊Spark RDD 以及Stage这部分的内容。

RDD,完整的表达是Resilient Distributed Datasets,翻译过来,就是弹性分布式数据集,基于这样的数据集,Spark能够进行分布式并行计算。

Spark RDD Stage

在大数据分布式计算当中,集群当中的任何一台服务器随时都有可能出现故障,如果一个task任务所在的服务器出现故障,必然导致这个task执行失败。而“弹性的”RDD,可以使这个task在集群内进行迁移,从而保证整体任务对故障服务器的平稳过渡。对于整个任务而言,只需重跑某些失败的task即可,而无需完全重跑,大大提高性能。

spark中分区划分规则默认是根据key进行哈希取模,切分后的数据子集可以独立运行在各个task中并且在各个集群服务器中并行执行。“分布式”的RDD,数据根据一定的切分规则切分成一个个的子集,能够很好地支持并行运算。

并且,RDD常常容易被人误解的一点在于,RDD并非是存储数据的,它只是数据集。RDD并不存储数据,它只记录数据存储的位置。在计算任务的执行上,调用不同的Spark算子,一个RDD会转换为另一个RDD,RDD彼此之间会形成pipeline管道,无需等到上一个RDD所有数据处理逻辑执行完就可以立即交给下一个RDD进行处理,性能也得到了很大提升。

而Spark RDD与Stage之间,还存在不同类型的依赖关系:宽依赖和窄依赖。

Spark中使用DAG(有向无环图)来描述RDD之间的依赖关系,根据依赖关系的不同,划分为宽依赖和窄依赖。宽依赖是多个子RDD的partition会依赖同一个parentRDD的partition;窄依赖则是每个parentRDD的partition最多被子RDD的一个partition使用。

关于Spark RDD Stage之间的关系以及如何划分,以上就是简单的介绍了。针对于Spark框架的学习,RDD和Stage划分相关的知识,对于理解Spark任务计算性能提升有很大的帮助,所以要牢牢掌握哦。加米谷大数据,成都大数据培训机构,大数据开发2020春季班正在招生中,详情可联系客服了解!
热点排行
推荐文章
立即申请>>