RDD的操作類型分為兩類:
? Transformation,根據原有的RDD創建一個新的RDD
? actions,對RDD操作后把結果返回給driver
Transfrmation操作是延遲的,也就是說從一個RDD轉換到另一個RDD的轉換不是馬上執行的,需要等到有Action操作的時候才會真正觸發運算。
Action會觸發Spark提交作業,并將數據輸出spark系統。
從小方向來說,Spark 算子大致可以分為以下三類:
?。?)Value數據類型的Transformation算子,這種變換并不觸發提交作業,針對處理的數據項是Value型的數據。
?。?)Key-Value數據類型的Transfromation算子,這種變換并不觸發提交作業,針對處理的數據項是Key-Value型的數據對。
?。?)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)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。