Я пытаюсь использовать потоки Hadoop в Amazon EMR, чтобы сделать простой подсчет слов для кучи текстовых файлов. Чтобы получить представление о потоке хаопов и о EMR Amazon, я тоже очень упростил набор данных. Каждый текстовый файл имел только одну строку текста (строка могла содержать сколь угодно большое количество слов).Hadoop streaming и AMAZON EMR
Mapper - это скрипт R, который разбивает строку на слова и возвращает ее обратно в поток.
cat(wordList[i],"\t1\n")
я решил использовать редуктор LongValueSum агрегатного для добавления счетчиков вместе, так что я должен был префикс моего вывода сопоставителя по LongValueSum
cat("LongValueSum:",wordList[i],"\t1\n")
и указать редуктор быть «агрегат "
Вопросы, которые у меня есть сейчас:
Промежуточный этап между преобразователем и редуктором, просто сортирует поток. Ключи не сочетаются. Я прав? Я спрашиваю об этом, потому что, если я не использую «LongValueSum» в качестве префикса для слов, выводимых компоновщиком, на редукторе я просто получаю потоки, отсортированные по ключам, но не агрегированные. То есть я получаю только заказ от K, в отличие от (K, список (значения)) на редукторе. Нужно ли мне указывать объединитель в моей команде?
Как используются другие агрегатные редукторы. Я вижу, много других редукторы/агрегаты/сумматоров имеющегося на http://hadoop.apache.org/mapreduce/docs/r0.21.0/api/org/apache/hadoop/mapred/lib/aggregate/package-summary.html
Как эти сумматоры и редуктор, указанные в AMAZON ОГО созданы?
Я считаю, что проблема такого рода была зарегистрирована и исправлена в потоке Hadoop для объединителя, но я не уверен, какая версия AMAZON EMR размещена, и версия, в которой это исправление доступно.
- Как насчет пользовательских форматов ввода и чтения записей и писателей. На Java существует множество библиотек. Достаточно ли указывать имя класса java для каждого из этих параметров?