《企业级大数据平台构建:架构与实现》—— 2.5.4 依赖

举报
华章计算机 发表于 2019/06/06 16:26:03 2019/06/06
【摘要】 本书摘自《企业级大数据平台构建:架构与实现》——书中第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所示,说明了窄依赖与宽依赖之间的区别。

image.png

图2-16 SparkRDD宽依赖和窄依赖示意


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。