1. 程式人生 > >【SPARK】- RDD持久化

【SPARK】- RDD持久化

因為RDD的惰性求值機制,每次遇到行動操作,都會觸發一次從頭開始的計算。這對於迭代計算而言,代價是很大的,迭代計算經常需要多次重複使用同一組資料。

因此,可以通過持久化(快取)機制避免這種重複計算的開銷

可以使用persist()方法對一個RDD標記為持久化標記持久化:出現persist()語句的地方,並不會馬上計算生成RDD並把它持久化,而是要等到遇到第一個行動操作觸發真正計算以後,才會把計算結果進行持久化,持久化以後的RDD將會被保留在計算節點的記憶體中被後面的行動操作重複使用)

persist(element)  element:

MEMORY_ONLY:表示將RDD作為反序列化的物件儲存在JVM中,如果記憶體不足,就要按照LRU原則替換快取中的內容

MEMORY_AND_DISK:表示將RDD作為反序列化的物件儲存在JVM中,如果記憶體不足,超出的分割槽將會被儲存在硬碟上

一般而言,使用cache()方法時,會呼叫persist(MEMORY_ONLY)

可以使用unpersist()方法手動吧持久化的RDD從快取中移除

如下圖: