RDD

RDD

RDD(Resilient Distributed Datasets) ,彈性分散式數據集, 是分散式記憶體的一個抽象概念,RDD提供了一種高度受限的共享記憶體模型,即RDD是唯讀的記錄分區的集合,只能通過在其他RDD執行確定的轉換操作(如map、join和group by)而創建,然而這些限制使得實現容錯的開銷很低。對開發者而言,RDD可以看作是Spark的一個對象,它本身運行於記憶體中,如讀檔案是一個RDD,對檔案計算是一個RDD,結果集也是一個RDD ,不同的分片、 數據之間的依賴 、key-value類型的map數據都可以看做RDD。

彈性分散式數據集(RDD,Resilient Distributed Datasets),它具備像MapReduce等數據流模型的容錯特性,並且允許開發人員在大型集群上執行基於記憶體的計算。現有的數據流系統對兩種套用的處理並不高效:一是疊代式算法,這在圖套用和機器學習領域很常見;二是互動式數據挖掘工具。這兩種情況下,將數據保存在記憶體中能夠極大地提高性能。為了有效地實現容錯,RDD提供了一種高度受限的共享記憶體,即RDD是唯讀的,並且只能通過其他RDD上的批量操作來創建。儘管如此,RDD仍然足以表示很多類型的計算,包括MapReduce和專用的疊代編程模型(如Pregel)等 。

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

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

RDD作為數據結構,本質上是一個唯讀的分區記錄集合。一個RDD可以包含多個分區,每個分區就是一個dataset片段。RDD可以相互依賴。如果RDD的每個分區最多只能被一個Child RDD的一個分區使用,則稱之為narrow dependency;若多個Child RDD分區都可以依賴,則稱之為wide dependency。不同的操作依據其特性,可能會產生不同的依賴。例如map操作會產生narrow dependency,而join操作則產生wide dependency。

相關詞條

熱門詞條

聯絡我們