Java Hadoop :Как создать преобразователи, которые принимают в качестве входных файлов файлы и выдают на выходе количество строк в каждом файле?

Я новичок в Hadoop, и мне удалось просто запустить пример wordCount:http://hadoop.apache.org/common/docs/r0.18.2/mapred_tutorial.html

Предположим, у нас есть папка с 3 файлами. Я хочу иметь по одному мапперу для каждого файла, и этот маппер просто подсчитает количество строк и вернет их редюсеру.

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

Итак, если у нас есть следующие 3 файла

input1.txt
input2.txt
input3.txt

и преобразователи возвращают :

mapper1 -> [input1.txt, 3]
mapper2 -> [input2.txt, 4]
mapper3 -> [input3.txt, 9]

, редуктор выдаст результат

3+4+9 = 16 

Я сделал это в простом приложении Java, поэтому я хотел бы сделать это в Hadoop. У меня всего 1 компьютер, и я хотел бы попробовать запустить его в псевдораспределенной среде.

Как я могу добиться этого? Какие правильные шаги я должен сделать?

Должен ли мой код выглядеть так, как в примере от apache? У меня будет два статических класса, один для картографа, один для редуктора? или у меня должно быть 3 класса, по одному для каждого маппера?

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

Спасибо!

5
задан sa125 28 April 2012 в 23:53
поделиться