2
我是Spark新手。我已經在多個地方閱讀過,在RDD上使用cache()會導致它被存儲在內存中,但到目前爲止我還沒有找到關於「如何確定最大數據大小」的明確指導方針或經驗法則,塞進內存?如果我稱爲「緩存」的數據量超過內存,會發生什麼情況?它會導致我的工作失敗,還是會對羣集性能產生顯着影響?如果數據無法與Spark中的cache()配合使用會發生什麼?
謝謝!
我是Spark新手。我已經在多個地方閱讀過,在RDD上使用cache()會導致它被存儲在內存中,但到目前爲止我還沒有找到關於「如何確定最大數據大小」的明確指導方針或經驗法則,塞進內存?如果我稱爲「緩存」的數據量超過內存,會發生什麼情況?它會導致我的工作失敗,還是會對羣集性能產生顯着影響?如果數據無法與Spark中的cache()配合使用會發生什麼?
謝謝!
正如在the official documentation與MEMORY_ONLY
持久性(相當於cache
)中明確提出:
如果RDD不裝入內存,某些分區將不會被緩存,將在每次飛行重新計算他們需要。
即使數據適合內存,如果有新數據進來,它也可以被驅逐。在實踐中,緩存更像是暗示而不是契約。你不能依靠緩存發生,但你也不必如果它成功。
參見: