内容簡介
-
- 一、Spark算子的概念
- 二、Spark常用算子概覽
-
-
- 1. transform算子
- 2.action算子
-
- 三、Spark常用算子原理圖解
-
-
- 1.transform算子
- 2.action算子
-
- 四、總結
一、Spark算子的概念
- 在Spark中提供了大量的算子來操作RDD,所謂算子可以了解為操作RDD的方法或者函數。算子大緻分為兩種類型:transform算子和action算子,所謂transform算子是将一個RDD轉變為另一個RDD的算子,但是transform算子不觸發送出作業,隻是完成作業中間過程處理,也就是說從一個RDD 轉換生成另一個 RDD 的轉換操作不是馬上執行,需要等到有 action 操作的時候才會真正觸發運算。transform參數類型為value或者key-value的形式;action算子可以了解為将RDD執行非轉化類型操作的算子,比如說将結果持久化至外部存儲系統的操作等等,action算子會觸發SparkContext送出job作業。
- 通俗地了解,transform算子,是對RDD執行變換操作的算子,它的傳回值是一個RDD,而對于action算子,是對RDD執行非變換操作的算子,它的傳回值一定不是RDD。對于一個Spark程式而言,必須要存在至少一個action算子,程式才會被執行,否則會抛出一個異常。
二、Spark常用算子概覽
1. transform算子
算子名稱 | 算子功能 |
---|---|
map | 對RDD中的每個元素都執行一個指定函數來産生一個新的RDD。任何原RDD中的元素在新RDD中都有且隻有一個元素與之對應。 |
flatMap | 與map類似,将原RDD中的每個元素通過函數f轉換為新的元素,并将這些元素放入一個集合,構成新的RDD。 |
filter | 對RDD元素進行過濾,傳回一個新的資料集,由經過給定的過濾條件函數後傳回值為true的原元素組成。 |
union | 合并兩個資料類型相同的 RDD ,并不進行去重操作,儲存所有元素。 |
distinct | 将RDD進行去重操作,傳回去重後的RDD。 |
cartesian | 傳回兩個RDD的笛卡爾積。 |
groupBy | 将元素通過函數生成相應的 Key,資料就轉化為 Key-Value 格式,之後将 Key 相同的元素分為一組。 |
groupByKey | 對RDD中的資料進行分組操作,在一個由(K, V)鍵值對組成的資料集上調用,傳回一個(K, Seq[V])對的資料集。 |
sortBy | 對RDD中的每個元素按照給定的條件進行排序。 |
sortByKey | 對RDD中的每個元素按照Key進行排序。 |
ReduceByKey | 對RDD中的每個元素對按照Key進行聚合操作。 |
join | 對兩個RDD中的每個元素對進行join操作,将兩個RDD中具有相同的key的元素的value進行笛卡爾積,傳回(key,(value1,value2))類型的值。 |
2.action算子
算子名稱 | 算子功能 |
---|---|
foreach | 對 RDD 中的每個元素都應用自定義函數操作(如将資料列印到控制台),不傳回 RDD 和 Array, 而是傳回Uint。 |
saveAsTextFile | 函數将資料輸出,存儲到 HDFS 的指定目錄。 |
collect | 将分布式的 RDD 傳回為一個對應資料類型的單機的 scala Array 數組。 |
count | 傳回整個 RDD 的元素個數。 |
三、Spark常用算子原理圖解
1.transform算子
- map算子
Spark學習之路(四):深度圖解Spark算子運作原理 - flatMap算子
Spark學習之路(四):深度圖解Spark算子運作原理 - filter算子
Spark學習之路(四):深度圖解Spark算子運作原理 - union算子
Spark學習之路(四):深度圖解Spark算子運作原理 - distinct算子
Spark學習之路(四):深度圖解Spark算子運作原理 - cartesian算子
Spark學習之路(四):深度圖解Spark算子運作原理 - groupBy算子
Spark學習之路(四):深度圖解Spark算子運作原理 - groupByKey算子
Spark學習之路(四):深度圖解Spark算子運作原理 - sortBy算子
Spark學習之路(四):深度圖解Spark算子運作原理 - sortByKey算子
Spark學習之路(四):深度圖解Spark算子運作原理 - ReduceByKey算子
Spark學習之路(四):深度圖解Spark算子運作原理 - join算子
Spark學習之路(四):深度圖解Spark算子運作原理
2.action算子
- foreach算子
Spark學習之路(四):深度圖解Spark算子運作原理 - saveAsTextFile算子
Spark學習之路(四):深度圖解Spark算子運作原理 - collect算子
Spark學習之路(四):深度圖解Spark算子運作原理 - count算子
Spark學習之路(四):深度圖解Spark算子運作原理
四、總結
- 本文較為全面地通過圖解的方式剖析了常用算子的工作原理,但是Spark的算子不隻這些,還有一些功能較為複雜但是用的相對較少的算子沒有介紹,後面如果有需要将會補充說明,靈活使用Spark算子對RDD進行高階變換是Spark程式的核心,是以了解各個Spark算子的使用至關重要,希望對您可以有所幫助。感謝您的閱讀,如有錯誤請不吝賜教!
- 更多内容請看 蕭邦主的技術部落格導航