當前位置:成語大全網 - 新華字典 - Spark之我看什麽是RDD

Spark之我看什麽是RDD

壹般來講,對於陌生的名詞,大家的第壹個反應都是“What is it?”。

RDD是Spark的核心內容,在Spark的官方文檔中解釋如下:RDD is a fault-tolerant collection of elements that can be operated on in parallel。由此可見,其中有兩個關鍵詞:fault-tolerant & in parallel。首先,容錯性是RDD的壹個重要特性;其次,它是並行計算的數據。

RDD的中文解釋為:彈性分布式數據集,全稱Resilient Distributed Datasets。賓語是dataset,即內存中的數據庫。RDD 只讀、可分區,這個數據集的全部或部分可以緩存在內存中,在多次計算間重用。 所謂彈性,是指內存不夠時可以與磁盤進行交換。這涉及到了RDD的另壹特性:內存計算,就是將數據保存到內存中。同時,為解決內存容量限制問題,Spark為我們提供了最大的自由度,所有數據均可由我們來進行cache的設置,包括是否cache和如何cache。

(關於cache的設置以及Spark的壹些基礎概念,/forum.php?mod=viewthread&tid=295317中解釋得很詳細。)

如果看到這裏,妳的思維裏對RDD還是沒有任何概念的話,或許可以參照我的形象化理解:RDD,就是壹個被武裝起來的數據集。

主體:a、由源數據分割而來,源碼中對應splits變量;

武器有下:b、數據集體內包含了它本身的“血統”信息,即dependencies變量,存儲著它的父RDD及兩者關系;

c、計算函數,即其與父RDD的轉化方式,對應源碼中的iterator(split) & compute函數;

d、壹些關於如何分塊以及如何存放位置的元信息,eg:partitioner & preferredLocations。

有了這些武器,RDD的容錯機制也就顯而易見了。容錯,顧名思義就是在存在故障的情況下,計算機系統仍能正常工作。 容錯通常有兩種方式 checkpoint 和logging update , RDD 采用的是 logging update 。 Checkpoint( 數據檢查點)意味著要在各個機器間復制大數據,花費會很高,這種拷貝操作相當緩慢,而且會消耗大量的存儲資源,因此deserted。 Logging update( 記錄更新),僅支持粗顆粒度變換,也就是說,僅記錄在單個塊上執行的單個操作,然後創建某個RDD的變換序列存儲下來,數據丟失時,就可通過“血統”重新計算,恢復數據。Nevertheless,血緣鏈(變換序列)變得很長時,建議用戶此時建立壹些數據檢查點加快容錯速度。(saveAstextFile方法手動設置)