RDD的操作類型分為兩類:
為廣平等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及廣平網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為做網(wǎng)站、網(wǎng)站設(shè)計、廣平網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
? Transformation,根據(jù)原有的RDD創(chuàng)建一個新的RDD
? actions,對RDD操作后把結(jié)果返回給driver
Transfrmation操作是延遲的,也就是說從一個RDD轉(zhuǎn)換到另一個RDD的轉(zhuǎn)換不是馬上執(zhí)行的,需要等到有Action操作的時候才會真正觸發(fā)運算。
Action會觸發(fā)Spark提交作業(yè),并將數(shù)據(jù)輸出spark系統(tǒng)。
從小方向來說,Spark 算子大致可以分為以下三類:
(1)Value數(shù)據(jù)類型的Transformation算子,這種變換并不觸發(fā)提交作業(yè),針對處理的數(shù)據(jù)項是Value型的數(shù)據(jù)。
(2)Key-Value數(shù)據(jù)類型的Transfromation算子,這種變換并不觸發(fā)提交作業(yè),針對處理的數(shù)據(jù)項是Key-Value型的數(shù)據(jù)對。
(3)Action算子,這類算子會觸發(fā)SparkContext提交Job作業(yè)。
例如map是一個轉(zhuǎn)換,他把RDD中的數(shù)據(jù)經(jīng)過一系列的轉(zhuǎn)換后轉(zhuǎn)換成一個新的RDD,而reduce則是一個action,它收集RDD所有的數(shù)據(jù)經(jīng)過一系列的處理,最后把結(jié)果傳遞給driver。
RDD的所有轉(zhuǎn)換操作都是lazy模式的,即Spark不會立馬計算出結(jié)果,而是記住所有對數(shù)據(jù)集的轉(zhuǎn)換操作,這些轉(zhuǎn)換只有遇到action的時候才會開始計算。這樣的設(shè)計使得spark更加高效。例如,對一個數(shù)據(jù)做一次map操作后進行reduce操作,只有reduce的結(jié)果返回給driver,而不是把數(shù)據(jù)量更大的map操作后傳遞給driver。
1.1 Transformation
transformation返回一個新的RDD方式有很多,如從數(shù)據(jù)源生成一個新的RDD,從RDD生成一個新的RDD。所有的transformation都是采用的懶策略,就是只將transformation提交是不會執(zhí)行的。
詳情參考:http://spark.apache.org/docs/latest/rdd-programming-guide.html
1.2 Action
Action是得到一個值,或者一個結(jié)果。計算只有在action被提交的時候才被觸發(fā)。
歡迎關(guān)注個人微信公眾號:大數(shù)據(jù)and機器學(xué)習(xí)(CLbigdata)