依据Spark1.4版 Spark中的shuffle大概是这么个过程:map端把map输出写成本地文件,reduce端去读取这些文件,然后执行reduce操作. 那么,问题来了: reducer是怎么知道它的输入在哪呢? 首先,mapper在写完文件之后,肯定能提供与它的输出相关的信息.这个信息,在Spark中由MapStatus表示 private[spark] sealed trait MapStatus { def location: BlockManagerId def getSizeF