spark常見運算元

2021-10-02 19:23:11 字數 2713 閱讀 4281

transfomation運算元

描述map

返回乙個新的rdd,該rdd由每乙個輸入元素經過func函式轉換後組成.就是講傳進去的rdd的每個元素轉換成新的元素

flatmap

flatmaprdd運算元就是把裡面的元素,經過乙個方法,把原來的元素由乙個變成多個

filter

過濾。返回乙個新的rdd,該rdd由經過func函式計算後返回值為true的輸入元素組成

distinct([numtasks]))

對源rdd進行去重後返回乙個新的rdd。預設情況下,只有8個並行任務來操作,但是可以傳入乙個可選的numtasks引數改變它

coalesce(numpartitions)

縮減分割槽數,用於大資料集過濾後,提高小資料集的執行效率

repartition(numpartitions)

根據分割槽數,重新通過網路隨機洗牌所有資料

sortby(func,[ascending],[numtasks])

使用func先對資料進行處理,按照處理後的資料比較結果排序,預設為正序

union(otherdataset)

對源rdd和引數rdd求並集後返回乙個新的rdd

subtract (otherdataset)

計算差的一種函式,去除兩個rdd中相同的元素,不同的rdd將保留下來

intersection(otherdataset)

對源rdd和引數rdd求交集後返回乙個新的rdd

cartesian(otherdataset)

笛卡爾積(盡量避免使用,沒啥用,給自己找事)

partitionby

對pairrdd進行分割槽操作,如果原有的partionrdd和現有的partionrdd是一致的話就不進行分割槽, 否則會生成shufflerdd,即會產生shuffle過程。

groupbykey

groupbykey也是對每個key進行操作,但只生成乙個sequence

reducebykey(func, [numtasks])

在乙個(k,v)的rdd上呼叫,返回乙個(k,v)的rdd,使用指定的reduce函式,將相同key的值聚合到一起,reduce任務的個數可以通過第二個可選的引數來設定。就是對key相同的value進行處理

aggregatebykey(1)zerovalue:給每乙個分割槽中的每乙個key乙個初始值;(2)seqop:函式用於在每乙個分割槽中用初始值逐步迭代value;(3)combop:函式用於合併每個分割槽中的結果。

在kv對的rdd中,,按key將value進行分組合併,合併時,將每個value和初始值作為seq函式的引數,進行計算,返回的結果作為乙個新的kv對,然後再將結果按照key進行合併,最後將每個分組的value傳遞給combine函式進行計算(先將前兩個value進行計算,將返回結果和下乙個value傳給combine函式,以此類推),將key與計算結果作為乙個新的kv對輸出

sortbykey([ascending], [numtasks])

在乙個(k,v)的rdd上呼叫,k必須實現ordered介面,返回乙個按照key進行排序的(k,v)的rdd

join(otherdataset, [numtasks])

在型別為(k,v)和(k,w)的rdd上呼叫,返回乙個相同key對應的所有元素對在一起的(k,(v,w))的rdd就是說兩個rdd的鍵一樣,但值不相同,講鍵相同的value整合成資料集

cogroup(otherdataset, [numtasks])

在型別為(k,v)和(k,w)的rdd上呼叫,返回乙個(k,(iterable,iterable))型別的rdd就是說cogroup:是把兩個rdd合併一下;但是兩個rdd,得是tuple2;當呼叫型別為(k,v)和(k,w)的資料集時,返回(k,(iterable,iterable)元組的資料集

map():每次處理一條資料。

coalesce重新分割槽,可以選擇是否進行shuffle過程。由引數shuffle: boolean = false/true決定。

repartition實際上是呼叫的coalesce,預設是進行shuffle的。原始碼如下:

def repartition(numpartitions: int)(implicit ord: ordering[t] = null): rdd[t] = withscope

reducebykey:按照key進行聚合,在shuffle之前有combine(預聚合)操作,返回結果是rdd[k,v].

groupbykey:按照key進行分組,直接進行shuffle。

開發指導:reducebykey比groupbykey,建議使用。但是需要注意是否會影響業務邏輯。

運算元描述

reduce(func)

通過func函式聚集rdd中的所有元素,先聚合分區內資料,再聚合分區間資料

collect()

在驅動程式中,以陣列的形式返回資料集的所有元素

count()

返回rdd中元素的個數

first()

返回rdd中的第乙個元素

take(n)

返回乙個由rdd的前n個元素組成的陣列

takeordered(n)

返回該rdd排序後(預設公升序)的前n個元素組成的陣列

countbykey()

針對(k,v)型別的rdd,返回乙個(k,int)的map,表示每乙個key對應的元素個數

foreach(func)

在資料集的每乙個元素上,執行函式func進行更新

spark運算元 五 action運算元

collect package com.doit.spark.demoday05 import org.apache.spark.sparkcontext author 向陽木 date 2020 09 22 22 19 description 將資料以陣列形式收集回driver端,資料按照分割槽編...

Spark運算元詳解

目錄 spark常用運算元詳解 3.getnumpartitions 4.partitions 5.foreachpartition 6.coalesce 7.repartition 8.union,zip,join 9.zipwithindex,zipwithuniqueid 未完待續.本文主要介...

spark運算元分類

transformation運算元 不觸發提交作業,完成作業中間處理過程 value資料型別的transformation運算元 輸入分割槽與輸出分割槽一對一型 輸入分割槽與輸出分割槽多對一型 輸入分割槽與輸出分割槽多對多型 輸出分割槽為輸入分割槽子集型 cache型 key value資料型別的t...