2015-02-11 81 views
0

我的mapToPair函數產生下面的輸出。reduceByKey在執行時會發生什麼?

(A,1) (A,1) (B,1)

我使用reduceByKey功能降低值和代碼如下:

private static final Function2<Integer, Integer, Integer> WORDS_REDUCER = 
     new Function2<Integer, Integer, Integer>() { 
     public Integer call(Integer a, Integer b) throws Exception { 
      return a + b; 
     } 
     }; 

它工作正常,有人可以向我解釋當代碼對(b,1)執行時代碼是如何工作的嗎?

+0

如果您使用與Java火花,使用拉姆達而不是功能 – 2016-05-24 10:38:02

回答

0

我不太來自這個問題它是什麼,你不知道,但也許這將幫助...

reduceByKey與功能X + Y作爲累加器,總結每值清晰鍵。如果你只有一個特定鍵的值,那麼這個值就是總和結果。

下面是一個使用PySpark一個例子:

testrdd = sc.parallelize((('a', 1), ('a', 1), ('b', 1))) 
    testrdd = testrdd.reduceByKey(lambda x,y:x+y) 
    result = testrdd.collect() 
    print ("result: {}".format(result)) 

    >result: [('a', 2), ('b', 1)] 
+0

感謝。我還有一個問題。 – sras 2015-02-11 10:53:28

+0

謝謝。你的答案幫助我..我還有一個問題。 你能不能告訴我如何減少(使用reduceByKey)下面的RDD。它具有作爲字符串的關鍵字,並且值是Iterable類(Touple是用戶定義的類)。 JavaPairRDD > group = pairs.groupByKey(); – sras 2015-02-11 11:02:44

+0

@sras,你應該爲你的新問題開一個新的問題。注意儘可能詳細地解釋問題 - 從您的評論中不太清楚。 – foundry 2015-02-11 11:58:53

相關問題