Spark核心RDD foldByKey函式詳解

2021-08-13 16:45:46 字數 883 閱讀 1474

foldbykey操作作用於rdd[k,v]根據k將v做摺疊、合併處理,其中的引數zerovalue表示先根據對映函式將zerovalue應用與v,進行初始化v,在將對映函式應用於初始化後的v。

scala> val rdd1 = sc.makerdd(array(

| ("a", 1), ("a", 2), ("b", 1), ("b", 2), ("c", 1)

| ))

rdd1: org.apache.spark.rdd.rdd[(string, int)] = parallelcollectionrdd[12] at makerdd at :24

scala> /**

| * rdd1中每個key對應的v進行累加,注意zerovalue=0,需要先初始化v,對映函式為+操作

| * 比如,("a", 1), ("a", 2),先將zerovalue應用於每個v,得到("a", 1+0), ("a", 2+),

| * 即,("a", 1), ("a", 2),在將對映函式應用於初始化後的v,最後得到("a", 1+@), ("a", 3)

| */

| rdd1.foldbykey(0)(_+_).collect()

res14: array[(string, int)] = array((b,3), (a,3), (c,1))

//對映函式為乘法時,zerovalue需設定成1

rdd1.foldbykey(1)(_*_).collect

res16: array[(string, int)] = array((b,2), (a,2), (c,1))

spark核心架構

driver部分的 sparkconf sparkcontext driver 部分 val conf new sparkconf val sc new sparkcontext conf end executor部分 分布到集群中的 比如 textfile flatman map worker 管...

Spark核心原理

寬依賴 有shuffle 父rdd的乙個分割槽會被子rdd的多個分割槽所依賴 窄依賴 沒有shuffle 父rdd的乙個分割槽只會被子rdd的1個分割槽所依賴 總結 窄依賴 並行化 容錯 寬依賴 進行階段劃分 shuffle後的階段需要等待shuffle前的階段計算完才能執行 spark的dag 就...

Spark核心 Spark Shuffle 解析

對上文的總結.什麼是shuffle?需要統籌全域性的運算元,sort就是乙個shuffle運算元.什麼是stage 以shuffle運算元為屆,例如,sort前面一部分是乙個stage,sort後面是乙個stage.shufflemapstage與resultstage shufflemapstag...