【摘要】:简单地说,每个RDD都包含有如下特点:一组RDD分区。计算每个分片的函数。对父RDD的一组依赖,这些依赖描述了RDD的Lineage,依赖还具体分为窄依赖和宽依赖,但并不是所有的RDD都有依赖。表3-1总结了每个RDD的核心内部接口:表3-1 RDD的核心内部接口RDD作为数据结构,本质上是一个只读的分区记录集合。一个RDD可以包含多个分区,每个分区就是一个dataset片段,RDD可以相互依赖。
简单地说,每个RDD都包含有如下特点:
(1)一组RDD分区(partition,即数据集的原子组成部分)。
(2)计算每个分片的函数(根据父RDD计算出此RDD)。
(3)对父RDD的一组依赖,这些依赖描述了RDD的Lineage,依赖还具体分为窄依赖和宽依赖,但并不是所有的RDD都有依赖。
(4)key-value型的RDD是根据哈希算法来分区的,这是一个可选项(可选项就是可以指定也可以不指定,不指定时使用默认的),可以由RDD的具体子类来指定自己的分区类型。
(5)每一个分片的优先计算位置(preferred location),这是一个可选项,可以由RDD的具体子类来指定自己的优先计算位置。
表3-1总结了每个RDD的核心内部接口:(www.xing528.com)
表3-1 RDD的核心内部接口
RDD作为数据结构,本质上是一个只读的分区记录集合。一个RDD可以包含多个分区,每个分区就是一个dataset片段,RDD可以相互依赖。如果RDD的每个分区最多只能被一个Child RDD的一个分区使用,则称之为narrow dependency;若多个Child RDD分区都可以依赖,则称之为wide dependency。不同的操作依据其特性,可能会产生不同的依赖。例如map操作会产生narrow dependency,而join操作则产生wide(shuffle)dependency(如图3-2所示)。
图3-2 RDD依赖图
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。