spark小記 32個常用運算元總結

2021-09-26 22:15:40 字數 2648 閱讀 2071

過濾操作,滿足filter內function函式為true的rdd內所有元素組成乙個新的資料集。如:filter(a == 1)。

map是對rdd中元素逐一進行函式操作對映為另外乙個rdd,而flatmap操作是將函式應用於rdd之中的每乙個元素,將返回的迭代器的所有內容構成新的rdd。而flatmap操作是將函式應用於rdd中每乙個元素,將返回的迭代器的所有內容構成rdd。

flatmap與map區別在於map為「對映」,而flatmap「先對映,後扁平化」,map對每一次(func)都產生乙個元素,返回乙個物件,而flatmap多一步就是將所有物件合併為乙個物件。

取樣操作,用於從樣本中取出部分資料。withreplacement是否放回,fraction取樣比例,seed用於指定的隨機數生成器的種子。(是否放回抽樣分true和false,fraction取樣比例為(0, 1]。seed種子為整型實數。)

對於源資料集和其他資料集求並集,不去重。

對於源資料集和其他資料集求交集,並去重,且無序返回。

返回乙個在源資料集去重之後的新資料集,即去重,並區域性無序而整體有序返回。(詳細介紹見

注:之後groupbykey、reducebykey、aggregatebykey、sortbykey、join、cogroup等transformation操作均包含[numtasks]任務數這個引數,參考上一行鏈結理解。

注:之後要用到很多對pairrdd進行的操作,在此新增pairrdd簡易建立過程。

在乙個pairrdd或(k,v)rdd上呼叫,返回乙個(k,iterable)。主要作用是將相同的所有的鍵值對分組到乙個集合序列當中,其順序是不確定的。groupbykey是把所有的鍵值對集合都載入到記憶體中儲存計算,若乙個鍵對應值太多,則易導致記憶體溢位。

在此,用之前求並集的union方法,將pair1,pair2變為有相同鍵值的pair3,而後進行groupbykey

與groupbykey類似,卻有不同。如(a,1), (a,2), (b,1), (b,2)。groupbykey產生中間結果為( (a,1), (a,2) ), ( (b,1), (b,2) )。而reducebykey為(a,3), (b,3)。

reducebykey主要作用是聚合,groupbykey主要作用是分組。(function對於key值來進行聚合)

類似reducebykey,對pairrdd中想用的key值進行聚合操作,使用初始值(seqop中使用,而combopencl中未使用)對應返回值為pairrdd,而區於aggregate(返回值為非rdd)

同樣是基於pairrdd的,根據key值來進行排序。ascending公升序,預設為true,即公升序;numtasks

加入乙個rdd,在乙個(k,v)和(k,w)型別的dataset上呼叫,返回乙個(k,(v,w))的pair dataset。

合併兩個rdd,生成乙個新的rdd。例項中包含兩個iterable值,第乙個表示rdd1中相同值,第二個表示rdd2中相同值(key值),這個操作需要通過partitioner進行重新分割槽,因此需要執行一次shuffle操作。(若兩個rdd在此之前進行過shuffle,則不需要)

求笛卡爾乘積。該操作不會執行shuffle操作。

通過乙個shell命令來對rdd各分割槽進行「管道化」。通過pipe變換將一些shell命令用於spark中生成的新rdd,如:

(借圖,莫怪^_^)

重新分割槽,減少rdd中分割槽的數量到numpartitions。

repartition是coalesce介面中shuffle為true的簡易實現,即reshuffle rdd並隨機分割槽,使各分割槽資料量盡可能平衡。若分割槽之後分割槽數遠大於原分割槽數,則需要shuffle。

該方法根據partitioner對rdd進行分割槽,並且在每個結果分割槽中按key進行排序。

reduce將rdd中元素兩兩傳遞給輸入函式,同時產生乙個新值,新值與rdd中下乙個元素再被傳遞給輸入函式,直到最後只有乙個值為止。

將乙個rdd以乙個array陣列形式返回其中的所有元素。(具體內容參見:

返回資料集中元素個數,預設long型別。

返回資料集的第乙個元素(類似於take(1))

對於乙個資料集進行隨機抽樣,返回乙個包含num個隨機抽樣元素的陣列,withreplacement表示是否有放回抽樣,引數seed指定生成隨機數的種子。

該方法僅在預期結果陣列很小的情況下使用,因為所有資料都被載入到driver端的記憶體中。

返回乙個包含資料集前n個元素的陣列(從0下標到n-1下標的元素),不排序。

返回rdd中前n個元素,並按預設順序排序(公升序)或者按自定義比較器順序排序。

將dataset中元素以文字檔案的形式寫入本地檔案系統或者hdfs等。spark將對每個元素呼叫tostring方法,將資料元素轉換為文字檔案中的一行記錄。

若將檔案儲存到本地檔案系統,那麼只會儲存在executor所在機器的本地目錄。

將dataset中元素以hadoop sequencefile的形式寫入本地檔案系統或者hdfs等。(對pairrdd操作)

將資料集中元素以objectfile形式寫入本地檔案系統或者hdfs等。

用於統計rdd[k,v]中每個k的數量,返回具有每個key的計數的(k,int)pairs的hashmap。

對資料集中每乙個元素執行函式function。

補充:spark2.3及之後的官方文件中將原[numtasks]任務數引數改為了[numpartitions]分割槽數。

Spark 常用運算元

官網rdd操作指南 2 key value資料型別的transfromation運算元 三 連線 3 action運算元 val list list 1 2,3 sc.parallelize list map 10 foreach println 輸出結果 10 20 30 這裡為了節省篇幅去掉了換...

Spark常用運算元練習

package cn.allengao.exercise import org.apache.spark.class name package describe sparkrdd運算元練習 creat user allen gao creat date 2018 1 25 creat time 10...

Spark常用運算元 action

spark action常用運算元型別如下 1.collectasmap map k,v 二元組rdd轉為map資料型別 countbykey map k,long 統計rdd中每個key出現的次數,還回map型別表示每個key出現了幾次 countbyvalue map t,long 統計rdd中...