2014-12-04 89 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。部分:執行組件:作業,任務和階段。

相關問題