为什么一个阶段后从文件中读取Spark这么快?

时间:2019-10-28 21:40:46

标签: apache-spark rdd

Spark在随机播放后将其结果具体化到磁盘上。在运行实验时,我看到Spark的任务在1ms内读取了65MB的实体化数据(有些任务甚至显示在0ms内读取:)。我的问题是Spark如何如此快速地从HDD读取数据?它实际上是从文件还是从内存读取数据?

@ zero323在setUnlockedDeviceRequired上的回答是To disk are written shuffle files. It doesn't mean that data after the shuffle is not kept in memory.,但我找不到任何官方的Spark消息源说Spark将随机输出保留在内存中,这在下一个任务读取时是首选。 / p>

Spark任务是从磁盘还是从内存读取随机输出(如果是从内存读取,如果有人可以指向官方消息源,我将非常感激)。

1 个答案:

答案 0 :(得分:0)

火花混洗输出被写入磁盘。您可以在效果影响主题的Spark Documents上找到它。

  • 随机播放还会在磁盘上生成大量中间文件。 从 Spark 1.3 开始,这些文件将保留到 相应的RDD将不再使用,并且会被垃圾回收。

  • 这样做是为了在以下情况下无需重新创建随机文件: 沿袭重新计算。垃圾收集只有在 如果应用程序保留对这些RDD的引用,则需要较长时间 或者GC不经常启动。

  • 这意味着长时间运行的Spark作业可能会消耗大量的 磁盘空间。