Spark學習筆記總結緩存
當持久化某個RDD後,每個節點都將把計算的分片結果保存在內存中,並在對此RDD或衍生出的RDD進行的其餘動做中重用(不須要從新計算)。這使得後續的動做變得更加迅速。RDD相關的持久化和緩存,是Spark最重要的特徵之一。學習
val rdd = sc.textFile("hdfs://172.23.27.19:9000/wrd/wc/srcdata/").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_) rdd.cache()//如今沒有緩存 rdd.collect//遇到action開始緩存
.cache()是一個transformation。在job的storage頁面也能夠看到緩存信息。.unpersist(true)釋放這個資源spa
設置緩存方式
RDD經過persist方法設置。默認的存儲級別都是僅在內存存儲一份,Spark的存儲級別還有好多種,存儲級別在object StorageLevel中定義的。
能夠設置在內存、硬盤、還有份數。code
緩存有可能丟失,或者存儲存儲於內存的數據因爲內存不足而被刪除。經過基於RDD的一系列轉換,丟失的數據會被重算,因爲RDD的各個Partition是相對獨立的,所以只須要計算丟失的部分便可,並不須要重算所有Partition。
可是,屢次迭代後數據丟失的從新計算,會影響這個效率。所以,RDD的緩存容錯機制保證了即便緩存丟失也能保證快速的恢復,而不是從新計算。orm
checkpoint保存的目錄是在HDFS目錄中,保證了存儲的可靠性。對象
sc.setCheckpointDir("hdfs://master:9000/..")//會在..目錄建立一個文件夾 //對象面的rdd設置checkpoint rdd.checkpoint rdd.collect
checkpoint和cache同樣,是transformation
當遇到action時,checkpoint會啓動另外一個任務,將數據切割拆分,保存到設置的checkpoint目錄中。內存
在Spark的checkpoint源碼中提到,資源
初接觸,記下學習筆記,還有不少問題,望指導,謝謝。源碼