2016-03-14 49 views
-5

我在Scala語言此功能:MapReduce如何在Apache Spark和Scala中工作?

def generatePairs(...) = { 
    val pairs = ArrayBuffer.empty[(Int, Int)] 

    pairs.append((00000, 11111)) 
    pairs.append((11111, 00000)) 

    pairs 
} 

然後我使用它:

//... 
.map(t => generatePairs(...)) 
.flatMap(pair => pair.map(x => x -> 1)) 
.reduceByKey((x, y) => x + y) 
//... 

所以問題是:

等於(00000,11111)及(11111, 00000)在地圖減少範例和火花斯卡拉符號?

是在後地圖,減少部分末端是真的: (00000,11111) - > 2

OR

(00000,11111) - > 1 (11111,00000) - > 1

+2

爲什麼(00000,11111 )將等於(11111,00000)? – zero323

+0

也許火花檢查相等的元素,並減少它如何一個元素? –

+0

你看到了什麼結果? – Phasmid

回答

0

假設 - 例如 - 這些是座標。

Are(x,y)和(y,x)的座標是否相同? 當然不是!

因此,MapReduce的不得假定一個元組的順序是默認無關。 (這並不表示它不能做,只是該系統不能假定這是默認行爲)

如果你想這種行爲,只是輸出相應的元組:

if x < y: 
    pairs.append((x,y)) 
else: 
    pairs.append((y,x)) 
+0

謝謝,我明白了 –

相關問題