Доступные редукторы в Elastic MapReduce - PullRequest
12 голосов
/ 22 декабря 2009

Надеюсь, я спрашиваю об этом правильно. Я изучаю Elastic MapReduce и вижу многочисленные ссылки на редуктор Aggregate, который можно использовать с потоками заданий Streaming.

В PDF-документе Amazon «Введение в Amazon Elastic MapReduce» говорится, что «Amazon Elastic MapReduce имеет редуктор по умолчанию, который называется aggregrate»

То, что я хотел бы знать: есть ли другие доступные по умолчанию редукторы?

Я понимаю, что могу написать свой собственный редуктор, но я не хочу в конечном итоге написать что-то, что уже существует, и "заново изобрести колесо", потому что я уверен, что мое колесо будет не таким хорошим, как оригинал.

Ответы [ 2 ]

8 голосов
/ 23 ноября 2010

Редуктор, на который они ссылаются, документирован здесь:

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

Редукторы и сумматоры в этом пакете очень быстры по сравнению с работающими потоковыми сумматорами и редукторами, поэтому использование агрегатного пакета удобно и быстро.

4 голосов
/ 02 августа 2011

Я в похожей ситуации. Из результатов Google и т. Д. Я делаю вывод, что прямо сейчас ответ «Нет, в Hadoop нет других редукторов по умолчанию», что отстой, потому что было бы, очевидно, полезно иметь редукторы по умолчанию, например, «среднее» или «среднее "так что вам не нужно писать свое.

http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/mapred/lib/aggregate/package-summary.html показывает ряд полезных применений агрегатора, но я не могу найти документацию о том, как получить доступ к другим функциям, кроме самой базовой суммы ключ / значение, описанной в документации и в ответе Эрика Форсберга. Возможно, эта функциональность доступна только в Java API, который я не хочу использовать.

Кстати, я боюсь, что ответ Эрика Форсберга не является хорошим ответом на этот конкретный вопрос. Можно сформулировать еще один вопрос, на который он может быть полезен, но это не то, о чем спрашивает ОП.

...