为什么混洗溢出比混洗读取或输出大小大得多?

时间:2019-11-11 11:18:47

标签: apache-spark pyspark

我有一个相当简单的PySpark作业,其中的最后一个阶段读取一些混洗的数据,在窗口上执行一些聚合,然后写入HDFS。中位数任务有:

  1. 读取130 MB随机播放
  2. 3.4 MB输出大小(写入HDFS)
  3. 2.0 GB随机溢出(内存)
  4. 140 MB随机溢出(磁盘)

各个任务之间存在偏差,但没有太大的变化。

我的问题:由于每个任务仅读取了130 MB的shuffle,并且没有进行shuffle写入(因为没有后续阶段),所以每个任务怎么可能会有2 GB的shuffle溢出?

我的理解是,如果执行数据占用过多的RAM,则混洗数据会从内存溢出到磁盘。但是在这里,从内存溢出的数量远远大于混洗数据的总大小。一般来说,混洗溢出的数据怎么会比混洗数据的大小大?

0 个答案:

没有答案