Shuffle Write阶段函数调用如下:
org.apache.spark.executor.run() --> org.apache.spark.scheduler.Task.run() --> org.apache.spark.scheduler.runTask() --> org.apache.spark.shuffle.hash.HashShuffleWriter.write() --> org.apache.spark.storage.DiskBlockObjectWriter.write()
任务在Executor上开始真正执行,代码如下:
该过程调用Task 中的run方法,该方法会调用runTask方法,而在spark中,任务可分为ShuffleMapTask和ResultTask,有Shuffle过程的为ShuffleMapTask
因此在Task类中的run方法中runTask(context: TaskContext)就有ShuffleMapTask与ResultTask的相应实现,本文讨论Shuffle Write过程中的函数调用关系
具体如下:
在ShuffleMapask中的runTask()实现中有如下代码:
该阶段会调用Shuffle write方法,默认调用HashShuffleWriter中write方法,具体代码如下:
该阶段会调用DiskBlockObjectWriter中的write()方法,实现数据的真正写入,具体如下:
时间: 2024-10-06 13:54:33