Spark RDD-2-持久化&容錯機制
阿新 • • 發佈:2018-12-02
- rdd.cache
- 預設呼叫persisi,之快取記憶體
- def cache(): this.type = persist()
- rdd.persist()
- def persist(): this.type = persist(StorageLevel.MEMORY_ONLY)
- rdd.unpersist(true)
- 手動釋放快取RDD佔用的記憶體、磁碟儲存資源
- rdd.checkpoint:容錯
- checkpoint會把rdd序列化到checkpoint目錄中,並丟棄rdd之前的依賴關係
- 實現:
- sc.setCheckpointDir("....") // 檢查點磁碟目錄,一般是hdfs
- rdd.cache // 先快取再checkpoint:如果rdd有依賴之前的rdd,checkpoint的時候會從頭計算,浪費資源,做了重複的工作
- rdd.checkpoint // 設定檢查點
- rdd.collect // action操作之後才真正的開始計算RDD並儲存到檢查點
- 應用場景:一般對於做了大量迭代計算的重要階段做checkpoint,使這個點的rdd成為頂層父rdd,恢復時只需要恢復該rdd,不用重新計算
- 比如迭代1000次,第998從失敗了,正好再997次checkpoint了,此時恢復會很快。