您当前的位置: 首页 >  交互

段智华

暂无认证

  • 0浏览

    0关注

    1232博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

8.4.2 ResultTask执行结果与Driver的交互原理及源码详解

段智华 发布时间:2017-06-24 09:46:54 ,浏览量:0

 8.4.2 ResultTask执行结果与Driver的交互原理及源码详解

    Task的run方法调用的时候会导致Task的抽象方法runTask的调用, Task.scala的runTask方法是一个抽象方法。Task包括2种Task:ResultTask、ShuffleMapTask,抽象runTask方法具体的实现由子类的runTask实现。ResultTask的runTask具体实现源码如下。

ResultTask.scala的runTask源码:

1.     override def runTask(context: TaskContext): U= {

2.       ……

3.   //反序列RDD和func处理函数

4.       val(rdd, func) = ser.deserialize[(RDD[T], (TaskContext, Iterator[T]) => U)](

5.       ……

6.       func(context, rdd.iterator(partition,context))

7.     }

 而ResultTask的runTask方法中反序列化生成func函数,最后通过func函数计算出最终的结果。

 

ResultTask执行结果与Driver的交互过程同ShuffleMapTask类似,最终DAGScheduler.handleTaskCompletion中task执行结果,根据ShuffleMapTask和ResultTask两种情况分别处理。其中ResultTask的处理结果如下。

DAGScheduler的handleTaskCompletion源码:

1.              casert: ResultTask[_, _] =>

关注
打赏
1659361485
查看更多评论
立即登录/注册

微信扫码登录

0.0463s