为什么Spark Shuffle Spill(内存)远大于Shuffle Read Size?什么是随机溢出(磁盘)?

Shi*_*arg 5 shuffle apache-spark

在 Spark 中,Map 任务将输出保存在本地磁盘的文件中(单个排序和合并的数据文件 + 索引/Map 任务)。此过程称为 ShuffleWrite。

在reduce阶段,使用外部shuffle服务(如果启用)读取Map输出文件,在读取数据时reduce任务应用Tim排序。

但为什么Shuffle的溢出(内存)远大于读取的数据总量呢?

在此输入图像描述