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