大資料學習之Spark 04RDD概述及建立

2021-10-08 09:27:22 字數 2597 閱讀 6231

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

rdd是由一系列partition組成

運算元(函式)是作用在rdd的partition上的

rdd之間有依賴關係

分割槽器是作用在k, v格式的rdd上

partition提供資料計算的最佳位置, 利於資料處理的本地化. 「計算移動, 資料不移動

1. 分割槽

rdd邏輯上是分割槽的,每個分割槽的資料是抽象存在的,計算的時候會通過乙個compute函式得到每個分割槽的資料。

如果rdd是通過已有的檔案系統構建,則compute函式是讀取指定檔案系統中的資料

如果rdd是通過其他rdd轉換而來,則compute函式是執行轉換邏輯將其他rdd的資料進行轉換。

2. 唯讀

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

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

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

3. 依賴

rdds通過操作運算元進行轉換,轉換得到的新rdd包含了從其他rdds衍生所必需的資訊,rdds之間維護著這種血緣關係,也稱之為依賴。

依賴包括兩種,一種是窄依賴,rdds之間分割槽是一一對應的,另一種是寬依賴,下游rdd的每個分割槽與上游rdd(也稱之為父rdd)的每個分割槽都有關,是多對多的關係。

4. 快取

如果在應用程式中多次使用同乙個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處拿到資料。

spark讀取hdfs中資料的方法textfile底層是呼叫的mr讀取hdfs檔案的方法: 首先會split, 每個split對應乙個block, 每個split對應生成rdd的每個partition

什麼是k, v格式的rdd?

rdd中的資料是乙個乙個的tuple2資料, 那麼這個rdd就是k, v格式的rdd

那裡體現了rdd的彈性(容錯)?rdd之間有依賴關係

rdd的partition可多可少

那裡體現了rdd的分布式?

rdd的partition分布在多個節點上.

在spark中建立rdd的建立方式可以分為三種:

從集合中建立rdd

從外部儲存建立rdd

從其他rdd建立

1. 從集合中建立rdd

從集合中建立rdd,spark主要提供了兩種函式:parallelize和makerdd

使用parallelize()從集合建立

使用makerdd()從集合建立

2. 由外部儲存系統的資料集建立

3. 從其他建立本文參考了尚矽谷spark課程的課件

大資料學習之Spark(1)

2019.09.101 spark的特點 2 總體架構 包括 3 常見術語 兩個抽象部件 sparkcontext rdd 必須建立乙個sparkcontext類例項,且只能擁有乙個啟用的sparkcontext類例項 1 最簡便方法 val sc new sparkcontext 2 建立spar...

大資料之spark學習記錄一 Intro

1.x 版本 從架構的角度存在很多的問題 namenode是單點操作,所以容易出現單點故障,制約了hdfs的發展 namenode的記憶體限制也影響了hdfs的發展 mapreduce是一種基於資料集的工作模式,面向資料,這種工作模式一般是從儲存上載入資料集,然後運算元據集,最好將結果寫入儲存裝置。...

大資料學習總結04

三 bi資料視覺化平台 superset superset是一款開源的現代化企業級bi。它是目前開源的資料分析和視覺化工具中比較好用的,功能簡單但可以滿足我們對資料的基本需求,支援多種資料來源,圖表型別多,易維護,易進行二次開發。1 入門案例 將資料庫裡的資料按照要求進行視覺化展示 案例01 使用s...