2014-12-04 141 views
6

为什么在洗牌期间spark会在磁盘上存储中间数据?我试图理解为什么它不能存储在内存中。写入内存有哪些挑战?Spark shuffle为什么在磁盘上存储中间数据?

是否有一些工作将其写入内存?

+0

您可以将“spark.shuffle.spill”设置为false以将中间数据写入内存。 – Amos 2014-12-26 03:45:20

+0

为什么这不是默认选项? – 2014-12-26 03:47:30

回答

4

Spark将shuffle操作中的中间数据存储在磁盘的“底层”优化中。当spark需要重新计算RDD图的一部分时,如果RDD已经存在,那么它可能会截断RDD图的沿袭,这是早期洗牌的副作用。即使RDD未被缓存或显式持久,也可能发生这种情况。

这个答案的来源是O'Reilly书籍Karau,Konwinski,Wendell的Learning Spark & Zaharia。第8章:调试和调试Spark。部分:执行组件:作业,任务和阶段。

相关问题