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

我有一个相当简单的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,则混洗数据会从内存溢出到磁盘。但是在这里,从内存溢出的数量远远大于混洗数据的总大小。一般来说,混洗溢出的数据怎么会比混洗数据的大小大?

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

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3124677.html

大家都在问