當前位置:編程學習大全網 - 編程語言 - (二)RDD概述及五大特性

(二)RDD概述及五大特性

壹、什麽是RDD

A Resilient Distributed Dataset (RDD), the basic abstraction in Spark. Represents an immutable,partitioned collection of elements that can be operated on in parallel.

RDD是壹個彈性的分布式的數據集,是spark的基本抽象,RDD是不可變的,並且它由多個partition構成(可能分布在多臺機器上,可以存memory上,也可以存disk裏等等),可以進行並行操作

彈性:分布式計算時可容錯

不可變:壹旦產生就不能被改變

RDD源碼如下:( /apache/spark/blob/master/core/src/main/scala/org/apache/spark/rdd/RDD.scala )

解讀:

1)抽象類:不能直接使用,需要借助於子類實現,使用時直接使用其子類即可

2)序列化:在分布式計算框架裏,序列化框架性能的好壞直接影響整個框架性能的優劣

3)logging:日誌記錄,2.0版本後不自帶,需要自己寫壹個

4)T:泛型 支持各種數據類型

5)sparkcontext

6)@transient

二、RDD的5大特點

1)A list of partitions

RDD由很多partition構成,在spark中,計算式,有多少partition就對應有多少個task來執行

2)A function for computing each split

對RDD做計算,相當於對RDD的每個split或partition做計算

3)A list of dependencies on other RDDs

RDD之間有依賴關系,可溯源

4)Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)

如果RDD裏面存的數據是key-value形式,則可以傳遞壹個自定義的Partitioner進行重新分區,比如可以按key的hash值分區

5)Optionally, a list of preferred locations to compute each split on (e.g. block locations for an HDFS file)

最優的位置去計算,也就是數據的本地性

計算每個split時,在split所在機器的本地上運行task是最好的,避免了數據的移動;split有多個副本,所以preferred location不止壹個

數據在哪裏,應優先把作業調度到數據所在機器上,減少數據的IO和網絡傳輸,這樣才能更好地減少作業運行時間(木桶原理:作業運行時間取決於運行最慢的task所需的時間),提高性能

三、RDD5大特性在源碼中的體現

(特性2)compute函數的入參必然是partition,因為對RDD做計算相當於對每個partition做計算

(特性1)getPartitions返回的必然是壹系列Partition類型的數據組成的數組

(特性3)RDD之間有依賴關系

(特性5)

(特性4)

  • 上一篇:精通ArcGIS地理信息系統的目錄
  • 下一篇:SAS軟件研究所的全球業務
  • copyright 2024編程學習大全網