2010-10-27 3 views
1

Я пытаюсь использовать потоки Hadoop в Amazon EMR, чтобы сделать простой подсчет слов для кучи текстовых файлов. Чтобы получить представление о потоке хаопов и о EMR Amazon, я тоже очень упростил набор данных. Каждый текстовый файл имел только одну строку текста (строка могла содержать сколь угодно большое количество слов).Hadoop streaming и AMAZON EMR

Mapper - это скрипт R, который разбивает строку на слова и возвращает ее обратно в поток.

cat(wordList[i],"\t1\n")

я решил использовать редуктор LongValueSum агрегатного для добавления счетчиков вместе, так что я должен был префикс моего вывода сопоставителя по LongValueSum

cat("LongValueSum:",wordList[i],"\t1\n")

и указать редуктор быть «агрегат "

Вопросы, которые у меня есть сейчас:

  1. Промежуточный этап между преобразователем и редуктором, просто сортирует поток. Ключи не сочетаются. Я прав? Я спрашиваю об этом, потому что, если я не использую «LongValueSum» в качестве префикса для слов, выводимых компоновщиком, на редукторе я просто получаю потоки, отсортированные по ключам, но не агрегированные. То есть я получаю только заказ от K, в отличие от (K, список (значения)) на редукторе. Нужно ли мне указывать объединитель в моей команде?

  2. Как используются другие агрегатные редукторы. Я вижу, много других редукторы/агрегаты/сумматоров имеющегося на http://hadoop.apache.org/mapreduce/docs/r0.21.0/api/org/apache/hadoop/mapred/lib/aggregate/package-summary.html

Как эти сумматоры и редуктор, указанные в AMAZON ОГО созданы?

Я считаю, что проблема такого рода была зарегистрирована и исправлена ​​в потоке Hadoop для объединителя, но я не уверен, какая версия AMAZON EMR размещена, и версия, в которой это исправление доступно.

  1. Как насчет пользовательских форматов ввода и чтения записей и писателей. На Java существует множество библиотек. Достаточно ли указывать имя класса java для каждого из этих параметров?

ответ

1

Промежуточный этап между преобразователем и редуктором, просто сортирует поток. Ключи не сочетаются. Я прав?

aggregate редуктор в потоковом делает реализацию соответствующих интерфейсов объединителя так Hadoop будет использовать его, если он считает нужным [1]

То есть я просто получать по заказу K, в отличие от (K, (Значения)) на редукторе.

С потоковым интерфейсом вы всегда получаете пары значений K, V; вы никогда не получите (K,list(values))

Как используются другие агрегатные редукторы.

С какими из них вы не уверены? Ссылку вы указали имеет краткое резюме о поведении каждого

Я считаю, проблема такого рода была подана и фиксированной

Какие проблемы вы думаете?

не уверен, какая версия AMAZON ОГО хостинга

EMR основан на Hadoop 0.20.2

Достаточно ли указать имя класса Java для каждого из этих вариантов?

Вы хотите сказать, что в контексте потоковой передачи? или совокупной структуры?

[1] http://hadoop.apache.org/mapreduce/docs/r0.21.0/api/org/apache/hadoop/mapred/lib/aggregate/package-summary.html

Смежные вопросы