淺談Spark算子

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) 

qrcode_for_gh_890e79302379_258.jpg


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