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