【发布时间】:2014-12-04 21:13:17
【问题描述】:
为什么 Spark 在 shuffle 期间会将中间数据存储在磁盘上?我试图理解为什么它不能存储在内存中。写入内存有哪些挑战?
是否正在做一些工作将其写入内存?
【问题讨论】:
-
可以将“spark.shuffle.spill”设置为false,将中间数据写入内存。
-
为什么这不是默认选项?
标签: apache-spark shuffle
为什么 Spark 在 shuffle 期间会将中间数据存储在磁盘上?我试图理解为什么它不能存储在内存中。写入内存有哪些挑战?
是否正在做一些工作将其写入内存?
【问题讨论】:
标签: apache-spark shuffle
Spark 将随机播放操作的中间数据存储在磁盘上,作为其“幕后”优化的一部分。当 spark 必须重新计算 RDD 图的一部分时,如果 RDD 已经存在,它可能能够截断 RDD 图的沿袭,这是早期 shuffle 的副作用。即使 RDD 没有被缓存或显式持久化,也会发生这种情况。
此答案的来源是 Karau、Konwinski、Wendell 和 Zaharia 的 O'Reilly 书籍 Learning Spark。第 8 章:调整和调试 Spark。部分:执行的组成部分:作业、任务和阶段。
【讨论】: