2016-09-22 47 views
0

當寫斯卡拉火花的代碼,如果我想補充在一起的兩個集合,我可以簡單的寫最簡潔的方式來增加2一起集合在Java中的火花

myRdd.reduceByKey(_ ++ _) 

如果我想這樣做在Java中一樣,然而,我必須做

myPairRdd.reduceBykey((s1, s2) -> { 
    s1.addAll(s2); 
    return s1; 
} 

我想知道是否有更簡潔的方式來編寫Java代碼。

+1

只是注意 - 你通常不應該使用'.reduceByKey(_ _ +)' – zero323

+0

真的嗎?我從來沒有聽說過這個。你能否詳細說明一下? – alexgbelov

+0

這只是相當難看的表現。 – zero323

回答

0

如果你試圖讓每個鍵的列表,請考慮以下幾點:

pairRDD.groupByKey().mapValues(_.toList) 
+0

你應該避免使用groupByKey。另外,我的價值觀已經以集合的形式出現;我想知道是否有一種更簡潔的方式來組合它們。 – alexgbelov

+0

@alexgbelov實際上'groupByKey'在這裏是一個最佳方法(如果Daniel用'_.flatten'代替'_.toList')。只是不簡潔的Java。 – zero323

+0

爲什麼? reduceByKey通常更快。另外,我不想將我的值轉換爲列表;我試圖找到合併兩個列表的單行方式。 – alexgbelov

相關問題