1. 程式人生 > >淺談Spark算子

淺談Spark算子

oss qrc com 類型 guide sha spa ng- align

RDD的操作類型分為兩類

? Transformation,根據原有的RDD創建一個新的RDD

? actions,對RDD操作後把結果返回給driver

Transfrmation操作是延遲的,也就是說從一個RDD轉換到另一個RDD的轉換不是馬上執行的,需要等到有Action操作的時候才會真正觸發運算。

Action會觸發Spark提交作業,並將數據輸出spark系統。

從小方向來說,Spark 算子大致可以分為以下三類:

  (1)Value數據類型的Transformation算子,這種變換並不觸發提交作業,針對處理的數據項是Value型的數據。
  (2)Key-Value數據類型的Transfromation算子,這種變換並不觸發提交作業,針對處理的數據項是Key-Value型的數據對。

  (3)Action算子,這類算子會觸發SparkContext提交Job作業。

技術分享圖片 例如map是一個轉換,他把RDD中的數據經過一系列的轉換後轉換成一個新的RDD,而reduce則是一個action,它收集RDD所有的數據經過一系列的處理,最後把結果傳遞給driver

RDD的所有轉換操作都是lazy模式的,即Spark不會立馬計算出結果,而是記住所有對數據集的轉換操作,這些轉換只有遇到action的時候才會開始計算。這樣的設計使得spark更加高效。例如,對一個數據做一次map操作後進行reduce操作,只有reduce的結果返回給driver,而不是把數據量更大的map操作後傳遞給driver。

1.1 Transformation

transformation返回一個新的RDD方式有很多,如從數據源生成一個新的RDD,從RDD生成一個新的RDD。所有的transformation都是采用的懶策略,就是只將transformation提交是不會執行的。

詳情參考:http://spark.apache.org/docs/latest/rdd-programming-guide.html

技術分享圖片

1.2 Action

Action是得到一個值,或者一個結果。計算只有在action被提交的時候才被觸發。




歡迎關註個人微信公眾號:大數據and機器學習(CLbigdata)

技術分享圖片


淺談Spark算子