Spark 源码分析 -- task实际执行过程
Spark源码分析 – SparkContext中的例子, 只分析到sc.runJob 那么最终是怎么执行的? 通过DAGScheduler切分成Stage, 封装成taskset, 提交给TaskScheduler, 然后等待调度, 最终到Executor上执行 val sc = new SparkContext(……) val textFile = sc.textFile("README.md") textFile.filter(line => line.contains("Spark")).count() 这是一个比较简单的没有shuffle的例子, 看看在Executor上是如何被执行的 首先这个job只有一个stage, 所以只会产生resultTask 最关键的执行语句, func(context, rdd.iterator(split, context)) 对于这个例子, func就是最终产生结果的count(), 而rdd就是count前最后一个rdd, 即filter产生的rdd 可以看到Spark中rdd的执行, 不是从前往后, 而是从后往前推的, 为什么? ...