原文:
spark所有複雜一點的演算法都會有persist身影,spark預設資料放在記憶體,spark很多內容都是放在記憶體的,非常適合高速迭代,1000個步驟 只有第乙個輸入資料,中間不產生臨時資料,但分布式系統風險很高,所以容易出錯,就要容錯,rdd出錯或者分片可以根據血統算出來,如果沒有對父rdd進行persist 或者cache的化,就需要重頭做。 以下場景會使用persist
1)某個步驟計算非常耗時,需要進行persist持久化 。
2)計算鏈條非常長,重新恢復要算很多步驟,很好使,persist。
3)checkpoint所在的rdd要持久化persist, lazy級別,框架發現有checnkpoint,checkpoint時單獨觸發乙個job,需要重算一遍,checkpoint前 要持久化,寫個rdd.cache或者rdd.persist,將結果儲存起來,再寫checkpoint操作,這樣執行起來會非常快,不需要重新計算rdd鏈條了。checkpoint之前一定會進行persist。
4)shuffle之後為什麼要persist,shuffle要進性網路傳輸,風險很大,資料丟失重來,恢復代價很大
5)shuffle之前進行persist,框架預設將資料持久化到磁碟,這個是框架自動做的。
spark的持久化
預設將rdd的資料持久化到記憶體中。cache是懶執行。注意 cache persist persist storagelevel.memory only 可以指定持久化的級別。最常用的是memory only和memory and disk。2 表示有副本數。cache和persist注意事項 c...
spark持久化(快取)
1 惰性求值 rdd轉化過程都是惰性求值的。這意味著在被呼叫行動操作之前spark不會開始計算,spark會在內部記錄下所要求執行的操作的相關資訊,我們可以把每個rdd看作我們通過轉化操作構建出來的 記錄如何計算資料的指定列表。把資料讀取到rdd的操作同樣是惰性的。2 持久化快取 sparkrdd是...
spark筆記 RDD的持久化
rdd.cache rdd.persist storagelevel.memory only persist方式可選取以下不同方式持久化memory and disk 如果記憶體不夠再存磁碟 disk only memory only ser 存資料時候實現序列化 可節省記憶體,但是讀取時要反序列化...