淺談Spark算子

RDD的操做類型分爲兩類html

Ø Transformation,根據原有的RDD建立一個新的RDDapache

Ø actions,對RDD操做後把結果返回給driver微信

  Transfrmation操做是延遲的,也就是說從一個RDD轉換到另外一個RDD的轉換不是立刻執行的,須要等到有Action操做的時候纔會真正觸發運算。
機器學習

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

從小方向來講,Spark 算子大體能夠分爲如下三類:學習

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

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

      例如map是一個轉換,他把RDD中的數據通過一系列的轉換後轉換成一個新的RDD,而reduce則是一個action,它收集RDD全部的數據通過一系列的處理,最後把結果傳遞給driverspa

  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

相關文章
相關標籤/搜索