RDD

1.RDD的定義

    RDD(Resilient Distributed Dataset) ,分佈式彈性數據集,是Spark上的一個核心抽象表示用於並行計算的,不可修改的,對數據集合進行分片的數據結構。任何數據在Spark中都被表示爲RDD。從開發者角度來看, RDD是Spark的一個對象,它本身存在於內存中,如讀文件是一個RDD,對文件計算也是一個RDD,結果集也是一個RDD,不同的分片、數據之間的依賴、Key-value類型的map數據都可以看做RDD。從編程的角度來看,RDD可以簡單看做一個數據。和普通數組的區別是,RDD中的數據是分區存儲的,這樣不同分區的數據就可以分佈在不同的機器上,同時可以被並行處理。因此,Spark應用程序就是把需要處理的數據轉換爲RDD,然後對RDD進行一系列的變換和操作從而得到結果。


2.RDD 的特點

   (1)它具備像MapReduce等數據模型的容錯特性,並且允許開發人員在大型集羣上執行基於內存的計算。RDD提供了一種高度受限的共享內存,即RDD是隻讀的,並且只能通過其他RDD上的批量操作來創建。

   (2)RDD是隻讀的、分區記錄的集合。RDD只能基於穩定物理存儲中的數據集和其他已有的RDD上執行確定性操作來創建。這些確定性操作稱作爲轉換,如map、filter、groupBy、join。

   (3)RDD不需要物化。RDD含有如何從其他RDD衍生出本RDD的相關信息,據此可以從物理存儲的數據計算出相應的RDD分區

   (4)RDD作爲數據結構,本質上是一個只讀的分區記錄集合。一個RDD可以包含多個分區,每個分區就是一個dataset片段。RDD可以相互依賴。如果RDD的每個分區最多隻能被一個Child RDD的一個分區使用,則稱之爲narrow dependency;若多個Child RDD 分區都可以依賴,則稱之爲wide dependency。


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