血缘和宽窄依赖

血缘和宽窄依赖

1.血缘

比如RDD2基于RDD1。

rdd2=rdd1.flatmap(word=>word.split(" "))

这就是rdd2 依赖rdd1.依赖是rdd之间的关系。某个rdd从数据源获取数据并不是依赖。

同时还存在间接依赖的情况,比如rdd3=rdd2.xxx。则rdd3间接依赖rdd1

需要注意的是,rdd不存储数据,如果rdd1没缓存,则rdd2调用时,rdd1需重新计算后给其调用。

多个连续的依赖关系称之为血缘。

2.宽窄依赖

假设rdd1有俩分区,rdd2也有俩分区。

窄依赖:

rdd1分区一有,a,b两条数据。分区上task跑完后,rdd2分区一也有a,b两条数据,这就是窄依赖

宽依赖:

rdd1分区1有a,b,分区2有c,d。 shuffle后,rdd2分区一有a,c。分区二有b。d

也就是说分区数没变,但是每个分区数据变了。同时新分区数据来自多个旧分区。

3.阶段任务

application:每初始话一个sparkcontext就生成一个application

job:一个action生成一个job

stage:stage是shuffle(宽依赖)数加1.同时通过shuffle来划分stage

task:一个stage阶段中,最后一个rdd的分区数就是task个数。

app ->job->stage->task

每一层都是一对N的关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值