spark 添加依赖_Spark RDD依赖关系以及分区属性

RDD的依赖关系

Spark中使用DAG(有向无环图)来描述RDD之间的依赖关系,根据依赖关系的不同,划分为宽依赖和窄依赖

通过上图,可以很容易得出所谓宽依赖:多个子RDD的partition会依赖同一个parentRDD的partition;窄依赖:每个parentRDD的partition最多被子RDD的一个partition使用。这两个概念很重要,像宽依赖是划分stage的关键,并且一般都会伴有shuffle,而窄依赖之间其实就形成前文所述的pipeline管道进行处理数据。(图中的map、filter等是Spark提供的算子,具体含义大家可以自行到Spark官网了解,顺便感受一下scala函数式编程语言的强大)。

Spark任务以及stage等的具体划分,牵涉到源码,后续会单独讲解

最后笔者以RDD源码中的注释,阐述一下RDD的属性:分区列表(数据块列表,只保存数据位置,不保存具体地址)

2. 计算每个分片的函数(根据父RDD计算出子RDD)

3. RDD的依赖列表

4. RDD默认是存储于内存,但当内存不足时,会spill到disk(可通过设置StorageLevel来控制)

5. 默认hash分区,可自定义分区器

6. 每一个分片的优先计算位置(preferred locations)列表,比如HDFS的block的所在位置应该是优先计算的位置

更多Spark分区原理和特性请参考文章:通过spark.default.parallelism谈Spark谈并行度​mp.weixin.qq.com聊聊Spark的分区​mp.weixin.qq.com重要 | Spark分区并行度决定机制​mp.weixin.qq.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值