1. 程式人生 > >Spark RDD-2-持久化&容錯機制

Spark RDD-2-持久化&容錯機制

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