Spark RDD的依賴關係和快取相關知識點

2021-10-04 22:57:40 字數 935 閱讀 3335

rdd快取

rdd和它依賴的父rdd的關係有兩種不同的型別,即窄依賴(narrow dependency)寬依賴(wide dependency)

寬依賴指的是子rdd中的資料**于父rdd中的多個分割槽,其實就是產生了shuffle

窄依賴指的是子rdd中的資料**于父rdd當中的乙個分割槽,也即沒有產生shuffle

lineage—— 根據rdd之間的依賴關係,將依賴關係給記錄下來叫做血統。

比如:

rdd1 ==> rdd2 ==> rdd3 ==> rdd4

記錄下來每乙個rdd的父rdd是誰,也記錄下來每乙個rdd的子rdd是誰,可以幫助我們做容災

spark速度非常快的原因之一,就是在不同操作中可以在記憶體中持久化或者快取資料集。當持久化某個rdd後,每乙個節點都將把計算分割槽結果儲存在記憶體中,對此rdd或衍生出的rdd進行的其他動作中重用。這使得後續的動作變得更加迅速。rdd相關的持久化和快取,是spark最重要的特徵之一。可以說,快取是spark構建迭代式演算法和快速互動式查詢的關鍵。

通過檢視storagelevel的原始碼可以拿到

object storagelevel
兩種方法:1.cache(),其實底層就是呼叫了persist,將資料僅僅的放到記憶體裡面去,放乙份

2.persist()

(1)無參,也是將只在記憶體中快取乙份資料

(2)帶storagelevel引數,一般選擇memory_and_disk_2

Spark RDD的寬窄依賴

rdd之間有一系列的依賴關係,依賴關係又分為窄依賴和寬依賴。父rdd和子rdd partition之間的資料關係是一對一的。或者父rdd乙個partition只對應乙個子rdd的partition情況下的父rdd和子rdd partition關係是多對一的。不會有shuffle的產生。父rdd與子r...

Spark RDD依賴講解(寬依賴和窄依賴)

一 窄依賴 narrow dependencies 1 子rdd的每個分割槽依賴於常數個父分割槽 既與資料規模無關 2 輸入輸出一對一的運算元,且結果rdd的每個分割槽結構不變,主要是map flatmap 3 輸入輸出一對一,但結果rdd的結構發生了變化,如union coalesce 4 從輸入...

舉例說明Spark RDD的分割槽 依賴

例子如下 scala val textfilerdd sc.textfile users zhuweibin downloads hive 04053f79f32b414a9cf5ab0d4a3c9daf.txt 15 08 03 07 00 08 info memorystore ensurefr...