Spark-RDD

1.RDD是什麼

RDD:彈性分佈式數據集(Resillient Distributed Dataset),是Spark中最基本的數據抽象。代碼中是一個抽象類,它代表一個不可變、可分區、裏面的元素可並行計算的集合。

2.RDD的主要特徵:

1)RDD是由一系列的partition組成的。
2)函數是作用在每一個partition(split)上的。
3)RDD之間有一系列的依賴關係。
4)RDD提供一系列最佳的計算位置。
在這裏插入圖片描述

3.RDD的創建:

(下面的代碼都是在spark-shell中完成,後面會寫在idea裏面完成的)

1)從集合中創建RDD:

利用SparkContext類中的兩個方法:parallelize和makeRDD。
在這裏插入圖片描述

2)從外部存儲創建RDD:

從外部存儲創建RDD是指從內部讀取數據文件創建RDD。
利用SparkContext對象的textFile方法讀取數據集。 用 sc.textFile(“路徑”),在路徑前面加上"file:///"
在這裏插入圖片描述

3)從其它RDD創建:

在這裏插入圖片描述

4.RDD兩種類型操作:

1)轉換操作(lazy模式):

基於現有的數據集創建一個新的數據集。(map、filter、faltMap、sortBy、distinct、union、groupByKey、reduceByKey)
①map:通過轉換已有的RDD生成新的RDD。
在這裏插入圖片描述
②filter:過濾RDD中的元素。
rdd.filter(x=>x.2>1) 也可以寫成rdd.filter(._2>1) 2是表示第二個元素。
在這裏插入圖片描述
③flatMap:扁平化(壓成同一級別,常用來用來切分單詞)。
flatMap其實相當於先Map後flatten。(Map+flatten)
在這裏插入圖片描述
④sortBy:排序。
第1、2、3個參數爲:進行排序的值、降序、分區設置
在這裏插入圖片描述
⑤distinct:去重。
直接用即可。
⑥Union:將兩個RDD元素合併成一個,不進行去重操作。
⑦intersection:求交集。
⑧subtract:求並集。
◉cartesian:笛卡兒積。(將兩個集合的元素兩兩組合成一組,A,B兩個RDD有2個元素,則使用cartesian求則會得到4個元組的RDD)

2)行動操作:

在數據集上進行運算,返回計算值。(collect、count、first、take、reduce、saveAsTestFile、foreach)
①collect:以數組的形式返回RDD中所有元素。
②count:RDD中元素的個數。
③first:返回RDD中的第一個元素。
④take(N):取RDD中的前N個元素。
⑤reduce:並行整合RDD中所有數據
在這裏插入圖片描述

3)兩者區別:

轉化操作返回的是 RDD,而行動操作返回的是其他的數據類型;
RDD的所有轉換操作都是懶執行的,只有當行動操作出現的時候Spark纔會去真的執行。

還有一些,後面再補。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章