2009-12-22 105 views
12

我希望我以正確的方式提出這個問題。我正在學習使用Elastic MapReduce的方法,並且我已經看到許多對「聚合」縮減器的引用,它們可以與「流式處理」作業流程一起使用。彈性MapReduce中可用的減速器

在亞馬遜的「介紹到亞馬遜彈性MapReduce」 PDF它指出:「亞馬遜彈性MapReduce有一個名爲彙集起來默認減速器」

我想知道的是:有其他默認減速availiable?

我明白我可以編寫自己的reducer,但我不想最終寫出已經存在的東西並「重新發明輪子」,因爲我確信我的輪子不會像原版的。

回答

4

我處於類似的情況。我從谷歌的結果等推斷,現在的答案是「不,Hadoop中沒有其他默認減速器」,這很糟糕,因爲默認減速器如「平均」或「中值」顯然是有用的「所以你不必寫自己的。

http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/mapred/lib/aggregate/package-summary.html顯示了許多有用的聚合器用法,但我找不到文檔介紹如何訪問文檔中和Erik Forsberg的答案中描述的非常基本的鍵/值之和以外的其他功能。也許這個功能只在Java API中公開,我不想使用它。

順便提一下,恐怕Erik Forsberg的答案不是這個特定問題的好答案。另一個可能成爲有用答案的問題是可以構建的,但這不是OP要求的。

8

他們指的減速機記錄在這裏:

http://hadoop.apache.org/docs/stable/api/org/apache/hadoop/mapred/lib/aggregate/package-summary.html

這是構建到流效用減速。它提供了一種通過編寫輸出按特殊方式格式化的鍵的映射器來執行常用計算的簡單方法。

例如,如果你的映射器輸出:

LongValueSum:id1\t12 
LongValueSum:id1\t13 
LongValueSum:id2\t1 
UniqValueCount:id3\tval1 
UniqValueCount:id3\tval2 

減速器將計算每個LongValueSum的總和,以及用於UniqValueCount計數不同的值。因此,減速機的輸出將是:

id1\t25 
id2\t12 
id3\t2 

此包中的減速器和組合都非常快相比,運行流媒體組合和減速器,所以使用總包,既方便又快捷。