cache和persist操作都是對rdd進行持久化,其中cache是persist採用memory_only儲存級別時的乙個特例,
scala> var rdd = sc.textfile("/users/lyf/desktop/data.txt")
scala> rdd.cache()
// 第一次計算行數,這裡只能從本地檔案讀取資料,不能從記憶體
scala> rdd.count()
res39: long = 4
// 第二次計算,則是從記憶體中讀取資料
scala> rdd.count()
res40: long = 4
scala> var rdd = sc.textfile("/users/lyf/desktop/data.txt")
scala> rdd.persist()
scala> rdd.count()
res42: long = 4
scala> rdd.count()
res43: long = 4
storagelevel有以下幾種
級別使用空間cpu時間是否在記憶體是否在磁碟備註
memory_only高低
是否資料只放在記憶體中
memory_only_2高低
是否持久化2份資料
memory_only_ser低高
是否資料序列化後存人記憶體
memory_only_ser_2低高
是否持久化2份資料
memory_and_disk高中
部分部分
如果資料在記憶體中放不下,則溢寫到磁碟
memory_and_disk_2高中
部分部分
持久化2份資料
memory_and_disk_ser低高
部分部分
如果資料在記憶體中放不下,則溢寫到磁碟。記憶體中存放序列化後的資料
memory_and_disk_ser_2低高
部分部分
持久化2份資料
disk_only低高
否是資料只存入磁碟
disk_only_2低高
否是持久化2份資料
與persist相反,該操作可以手動將持久化的資料從快取中移除
scala> var rdd = sc.textfile("/users/lyf/desktop/data.txt")參考:scala> rdd.persist()
scala> rdd.unpersist()
[1] 郭景瞻. **spark:核心技術與案例實戰[m]. 北京:電子工業出版社, 2017.
Spark操作 轉換操作 一
基礎轉換操作 鍵值轉換操作 對rdd中的每個元素都應用乙個指定的函式,以此產生乙個新的rdd scala var rdd sc.textfile users lyf desktop test data1.txt scala rdd.map line line.split collect res16 ...
Spark操作 行動操作 一
scala var rdd sc.makerdd array a 1 a 2 a 3 b 4 b 5 c 6 c 7 c 8 c 9 d 10 rdd org.apache.spark.rdd.rdd string,int parallelcollectionrdd 60 at makerdd at...
spark 常用操作
該文章記錄使用的spark的基本操作 import breeze.numerics.pow import org.apache.spark.sparkconf import org.apache.spark.sql.sparksession object template val dot udf u...