Spark RDD概述特點

2021-10-01 19:54:35 字數 1867 閱讀 6558

rdd(resilient distributed dataset)叫做分布式資料集,是spark中最基本的資料抽象。**中是乙個抽象類,它代表乙個不可變、可分割槽、裡面的元素可平行計算的集合。

一組分割槽(partition),即資料集的基本組成單位;

乙個計算每個分割槽的函式;

rdd之間的依賴關係;

乙個partitioner,即rdd的分片函式;

乙個列表,儲存訪問每個partition的優先位置(preferred location)。

rdd表示唯讀的分割槽的資料集,對rdd進行改動,只能通過rdd的轉換操作,由乙個rdd得到乙個新的rdd,新的rdd包含了從其他rdd衍生所必需的資訊。rdds之間存在依賴,rdd的執行是按照血緣關係延時計算的。如果血緣關係較長,可以通過持久化rdd來切斷血緣關係。

rdd邏輯上是分割槽的,每個分割槽的資料是抽象存在的,計算的時候會通過乙個compute函式得到每個分割槽的資料。如果rdd是通過已有的檔案系統構建,則compute函式是讀取指定檔案系統中的資料,如果rdd是通過其他rdd轉換而來,則compute函式是執行轉換邏輯將其他rdd的資料進行轉換。

如下圖所示,rdd是唯讀的,要想改變rdd中的資料,只能在現有的rdd基礎上建立新的rdd。

由乙個rdd轉換到另乙個rdd,可以通過豐富的操作運算元實現,不再像mapreduce那樣只能寫map和reduce了,如下圖所示。

rdd的操作運算元包括兩類,一類叫做transformations,它是用來將rdd進行轉化,構建rdd的血緣關係;另一類叫做actions,它是用來觸發rdd的計算,得到rdd的相關計算結果或者將rdd儲存的檔案系統中。下圖是rdd所支援的操作運算元列表。

rdds通過操作運算元進行轉換,轉換得到的新rdd包含了從其他rdds衍生所必需的資訊,rdds之間維護著這種血緣關係,也稱之為依賴。如下圖所示,依賴包括兩種,一種是窄依賴,rdds之間分割槽是一一對應的,另一種是寬依賴,下游rdd的每個分割槽與上游rdd(也稱之為父rdd)的每個分割槽都有關,是多對多的關係。

如果在應用程式中多次使用同乙個rdd,可以將該rdd快取起來,該rdd只有在第一次計算的時候會根據血緣關係得到分割槽的資料,在後續其他地方用到該rdd的時候,會直接從快取處取而不用再根據血緣關係計算,這樣就加速後期的重用。如下圖所示,rdd-1經過一系列的轉換後得到rdd-n並儲存到hdfs,rdd-1在這一過程中會有個中間結果,如果將其快取到記憶體,那麼在隨後的rdd-1轉換到rdd-m這一過程中,就不會計算其之前的rdd-0了。

雖然rdd的血緣關係天然地可以實現容錯,當rdd的某個分割槽資料失敗或丟失,可以通過血緣關係重建。但是對於長時間迭代型應用來說,隨著迭代的進行,rdds之間的血緣關係會越來越長,一旦在後續迭代過程**錯,則需要通過非常長的血緣關係去重建,勢必影響效能。為此,rdd支援checkpoint將資料儲存到持久化的儲存中,這樣就可以切斷之前的血緣關係,因為checkpoint後的rdd不需要知道它的父rdds了,它可以從checkpoint處拿到資料。

第1章 Spark RDD概述

rdd resilient distributed dataset 叫做分布式資料集,是spark中最基本的資料抽象。中是乙個抽象類,它代表乙個不可變 可分割槽 裡面的元素可平行計算的集合。1 一組分割槽 partition 即資料集的基本組成單位 2 乙個計算每個分割槽的函式 3 rdd之間的依賴...

Spark RDD屬性特點和概念關係

1.4 rdd相關概念關係 rdd resilient distributed dataset 叫做分布式資料集,是spark中最基本的資料抽象。中是乙個抽象類,它代表乙個不可變 可分割槽 裡面的元素可平行計算的集合。一組分割槽 partition 即資料集的基本組成單位 乙個計算每個分割槽的函式 ...

PDO概述特點及安裝

pdo概述 pdo是php data object php資料物件 的簡稱,它是與php5.1版本一起發行的。目前支援的資料庫包括firebird freetds interbase mysql ms sql server odbc oracle postgre sql sqlite和sybase。...