RDD的快取能夠在第一次計算完成後,將計算結果儲存到記憶體、本地檔案系統或者Tachyon中。通過快取,Spark避免了RDD上的重複計算,能夠極大地提升計算速度。但是,如果快取丟失了,則需要重新計算。如果計算特別複雜或者計算耗時特別多,那麼快取丟失對於整個Job的影響是不容忽視的。

為了避免快取丟失重新計算帶來的開銷,Spark又引入了檢查點(checkpoint)機制。

快取是在計算結束後,直接將計算結果通過使用者定義的儲存級別(儲存級別定義了快取儲存的介質,現在支援記憶體、本地檔案系統和Tachyon)寫入不同的介質。

而檢查點不同,它是在計算完成後,重新建立一個Job來計算。

為了避免重複計算,推薦 先將RDD快取,這樣就能保證檢查點的操作可以快速完成。

設定檢查點:

//設定檢查點目錄 儲存在HDFS上,並使用checkpoint設定檢查點,該操作屬於懶載入
sc.setCheckpointDir("hdfs://IP:9000/checkpoint/")
rdd.checkpoint()