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任务是从磁盘还是从内存读取随机输出(如果是从内存读取,如果有人可以指向官方消息源,我将非常感激)。
答案 0 :(得分:0)
火花混洗输出被写入磁盘。您可以在效果影响主题的Spark Documents上找到它。
随机播放还会在磁盘上生成大量中间文件。 从 Spark 1.3 开始,这些文件将保留到 相应的RDD将不再使用,并且会被垃圾回收。
这样做是为了在以下情况下无需重新创建随机文件: 沿袭重新计算。垃圾收集只有在 如果应用程序保留对这些RDD的引用,则需要较长时间 或者GC不经常启动。
这意味着长时间运行的Spark作业可能会消耗大量的 磁盘空间。