2016-02-29 47 views
2

我是Spark新手。我已經在多個地方閱讀過,在RDD上使用cache()會導致它被存儲在內存中,但到目前爲止我還沒有找到關於「如何確定最大數據大小」的明確指導方針或經驗法則,塞進內存?如果我稱爲「緩存」的數據量超過內存,會發生什麼情況?它會導致我的工作失敗,還是會對羣集性能產生顯着影響?如果數據無法與Spark中的cache()配合使用會發生什麼?

謝謝!

回答

6

正如在the official documentationMEMORY_ONLY持久性(相當於cache)中明確提出:

如果RDD不裝入內存,某些分區將不會被緩存,將在每次飛行重新計算他們需要。

即使數據適合內存,如果有新數據進來,它也可以被驅逐。在實踐中,緩存更像是暗示而不是契約。你不能依靠緩存發生,但你也不必如果它成功。

參見:

相關問題