Spark運算元之間的區別

2021-09-07 04:43:49 字數 832 閱讀 4108

map屬於transformation運算元,foreach屬於action運算元

map有返回值,foreach沒有返回值map有返回值,foreach沒有返回值

map常用於將某個rdd做元素的處理,foreach常用於作為結果的輸出到其他的儲存系統中

foreach是針對於rdd的每個元素進行操作,foreachpartition是針對rdd的每個分割槽進行操作的。

從優化層面講,foreachpartition用於儲存大量結果資料的場景,可以乙個分割槽對應乙個資料庫的連線,這樣就可以減少很多資料庫的連線

rdd.foreachpartition(partition => )

groupbykey不會再分區內進行操作,只會在全域性進行操作。

而reducebykey即會在分區內進行操作,也會在全域性進行操作,看原始碼可以看到reducebykey中呼叫的是combinebykeywithclasstag方法,reducebykey的區域性和全域性操作的函式相同

//combinebykeywithclasstag方法會傳入兩個函式,第乙個函式進行區域性操作,第二個函式進行全域性操作

def reducebykey(partitioner: partitioner, func: (v, v) => v): rdd[(k, v)] = self.withscope

//groupbykey不應該在map端進行合併,因為map端不會減少資料量,需要所有的map端的資料插入到乙個雜湊表中

def groupbykey(partitioner: partitioner): rdd[(k, iterable[v])] = self.withscope

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...