Spark RDD Cache算子的作用

    我們經常會對RDD執行一系列Transformation算子操作,邏輯上每經歷一次變換,就會將RDD轉換爲一個新的RDD,RDD會被劃分成很多的分區分佈到集羣的多個節點中。

    分區是邏輯概念,爲了防止函數式數據不可變行(immutable)導致的內存需求無限擴張,使得系統內存被快速用完,Spark使用延遲執行(lazy)的方式執行,即只有操作累計到Action(行動),算子纔會觸發整個操作序列的執行,中間結果不會單獨再重新分配內存,而是在同一個數據塊上進行流水線操作。

    也就是說變換前後的新舊RDD的分區在物理上可能是同一塊內存存儲,這是Spark內部做的優化。有些RDD是計算的中間結果,其分區並不一定有相對應的內存或磁盤數據與之對應,所以如果想要複用某一個RDD,需要通過Cache算子,將數據緩存(或者說固化)到內存中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章