spark中cache和checkpoint使用

1)cache
cache是爲了追求計算的速度
spark中計算任務在內存中,但是結果是存儲在磁盤中的,所以首次運行會慢,之後會拿磁盤中的計算結果,所以後面會快很多

通過對結果的RDD分佈式數據集進行cache,將計算結果緩存在內存中,這樣會比緩存在磁盤中更快的讀取。
比如計算log文件的行數

scala> val rdd1 = sc.textFile("hdfs://192.168.252.121:9000/cache/itstar.log")
rdd1: org.apache.spark.rdd.RDD[String] = hdfs://192.168.252.121:9000/cache/itstar.log MapPartitionsRDD[1] at textFile at <console>:24

scala> rdd1.count
res0: Long = 8031 

首次執行會花費20多秒,第二次在3秒。
在執行cache後,花費在毫秒級

scala> val rdd1 = sc.textFile("hdfs://192.168.252.121:9000/cache/itstar.log")
scala> val rdd1cache = rdd1.cache
scala> rdd1cache.count

在這裏插入圖片描述
sc.textFile的結果都存儲在內存中,所以讀取非常快
在這裏插入圖片描述
2)checkpoint
checkpoint是爲了出現機器故障後,保證數據計算結果的安全性
可以將計算的中間結果備份存儲在hdfs的某個目錄下
checkdir文件夾會自動創建

sc.checkpointDir("hdfs://192.168.252.121:9000/checkdir")

然後哪個rdd結果想先保存就可以調用checkpoint方法

scala> val rddc = rdd1.filter(_.contains("bigdata"))
scala> rddc.checkpoint

那麼rdd1過濾後的數據集將會保存在checkdir目錄中
比如調用rddc.count

rddc.count

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章