彈性分散式數據集(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。