精通spark源码-rdd是如何运行的

一、spark执行过程的一个例子

// rdd_people: id,年龄
var rdd_people = sc.range(1, 100, 1).map(i=>(i, 20+i%80) )
//rdd_score: id,成绩
var rdd_score =sc.range(1, 100, 1).map(i=>(i  ,i+2))
//两个进行join
var rdd_res = rdd_people.join(rdd_score)
rdd_res.count()

上面的例子就是一个两个数据集进行join然后count的一个操作。
那么在运行这段代码的时候spark内部是如何来处理数据并得到最终得结果的呢。

1.1 spark的角度看你的代码

当你执行下面的代码你会看到一些列连接起来的rdd。那么你上面的那些没有action操作的代码意义就在于组建一个rdd串起来的一个有向无环图(DAG)。

rdd_res.toDebugString
你会得到下面得结果:
(2) MapPartitionsRDD[23] at join at <console>:28 []
 |  MapPartitionsRDD[22] at join at <console>:28 []
 |  CoGroupedRDD[21] at join at <console>:28 []
 +-(2) MapPartitionsRDD[14] at map at <console>:24 []
 |  |  MapPartitionsRDD[13] at range at <console>:24 []
 |  |  ParallelCollectionRDD[12] at range at <console>:24 []
 +-(2) MapPartitionsRDD[17] at map at <console>:24 []
    |  MapPartitionsRDD[16] at range at <console>:24 []
    |  ParallelCollectionRDD[15] at range at <console>:24 []

DAG

1.2 rdd如何得到结果

上面说到我们写的代码都会在spark内部转化成各种rdd的相互连接的dag。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值