《企业级大数据平台构建:架构与实现》—— 2.5.4 依赖
【摘要】 本书摘自《企业级大数据平台构建:架构与实现》——书中第2章,2.5.4节,作者是朱凯。
2.5.4 依赖
RDD作为数据结构,本质上是一个只读的分区记录集合。一个RDD可以包含多个分区,每个分区是一个数据片段。RDD可以相互依赖。如果父RDD的每个分区最多被一个子RDD的分区使用,则称之为窄依赖;若多个子RDD分区依赖一个父RDD的分区,则称之为宽依赖。不同的操作依据其特性,可能会产生不同的依赖。例如map操作会产生窄依赖,而join操作则产生宽依赖。
Spark之所以将依赖分为两种,基于两点原因。首先,窄依赖支持在同单个集群上以管道的形式式执,例如在执行了map后,紧接着执行f?ilter。相反,宽依赖需要所有的父RDD数据都可用并通过shuff?le动作才可继续执行。
其次,窄依赖的失败恢复更加高效,因为它只需要重新计算丢失的父分区,并且这些计算可以并行的在不同节点同时进行。与此相反,在宽依赖的继承关系中,单个失败的节点可能导致一个RDD的所有先祖RDD中的一些分区丢失,导致计算的重新执行。如图2-16所示,说明了窄依赖与宽依赖之间的区别。
图2-16 SparkRDD宽依赖和窄依赖示意
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)