spark學習記錄(二、RDD)
阿新 • • 發佈:2018-12-29
一、概念
RDD(Resilient Distributed Dataset)叫做彈性分散式資料集,是Spark中最基本的資料抽象,它代表一個不可變、可分割槽、裡面的元素可平行計算的集合。RDD具有資料流模型的特點:自動容錯、位置感知性排程和可伸縮性。RDD允許使用者在執行多個查詢時顯式地將工作集快取在記憶體中,後續的查詢能夠重用工作集,這極大地提升了查詢速度。
RDD的五大特性:
- RDD是由一系列的partition組成
- 運算元(函式)作用在partition上
- RDD之間是有依賴關係,某一個RDD丟失時,可以基於依賴關係重新生成
- 分割槽器是基於K,V格式的RDD
- partition對外提供一系列最佳的計算位置,利於資料處理的本地化
補充:
- 如果RDD中的每個元素是一個個二元組,那麼這個RDD就是K,V格式
- sc.textFile():Spark沒有直接讀取hdfs檔案的方法,textFile()的底層呼叫的是MR讀取HDFS的方法,首先會切分,每一塊預設大小為128m,就是一個block大小,每一塊對應一個partition
- 一個partition只能由一個task處理
- partition的個數可根據資料量多少而改變,即可分割,合併。啟動程序需要時間,所以資料量大時將資料分成多程序處理,但資料量小時,合併partition,減少分割槽
- partition分佈在多個節點上處理
- RDD中是不存資料的,partition中也不存資料