我正在阅读Learning Spark,我不明白Spark的shuffle输出写入磁盘是什么意思。请参见第8章,调整和调试Spark,第148-149页:
Spark的内部调度程序可能会截断RDD图的谱系 如果现有RDD已经存在于集群内存中或已经存在 磁盘。第二种情况是这种截断可能发生在RDD时 已经实现了早期洗牌的副作用,甚至 如果它没有明确保持。这是一个引擎盖下 利用 Spark shuffle这一事实的优化 输出写入磁盘,并多次利用这一事实 重新计算RDD图的部分。
据我所知,存在不同的持久性策略,例如,默认的MEMORY_ONLY
,这意味着中间结果永远不会持久保存到磁盘。
什么时候以及为什么shuffle会在磁盘上持续存在?如何通过进一步的计算重用它?
答案 0 :(得分:5)
当需要随机播放的操作第一次评估(操作)并且无法禁用时,会发生这种情况
这是一项优化。洗牌是Spark中发生的昂贵事情之一。
它会自动重复使用在同一RDD上执行的任何后续操作。