上一篇讲解了Spark源码解读之RDD构建和转换过程,上一篇的RDD操作都是transform,也就是说结果会是一个新的RDD,并不会进行真正地计算,真正会引发Spark计算操作时action。比如first、count、collect。
WordCounts.collect()会真正出发一个Job的执行。
调用流程:
org.apache.spark.SparkContext.runJob
org.apache.spark.scheduler.DAGScheduler.runJob
org.apache.spark.scheduler.DAGScheduler.submitJob
org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.post
org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.run
org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onReceive
org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.doOnReceive
org.apache.spark.scheduler.DAGScheduler.handleJobSubmitted