1. 程式人生 > >Spark一些基礎原理——Cache

Spark一些基礎原理——Cache

lv0

cache是Spark程式設計中比較重要的一環,是對RDD的中間結算結果進行持久化,截斷RDD的血統,這種持久化一般是多副本形式存在的。在Task發生呼叫RDD的compute計算時,其通過iterator進行計算,它會識別是否有快取資料可以呼叫,如果沒有則通過RDD繼續計算;如果有則BlockManager從Local或者Remote獲取資料,沒獲取到再檢查checkpoint中的資料,有則獲取,沒有則進行計算。快取有兩種方式,一種在硬碟中快取,另一種在記憶體中快取。
其中記憶體快取空間不足時會清理部分空間放入新的快取。被清理的資料由BlockManager drop到磁碟上,賦予blockID進行調取,但這種方式得到的資料不一定完整。所以資料丟失後一般會重新進行計算。