2015-07-12 2 views
0

Я пытаюсь написать задание MapReduce, которое он может прочитать. Два файла последовательности в Mapper. Я пробовал читать и писать файл последовательности в «main», но я не знаю, как это сделать в Mapper. Я думаю, что я не очень хорошо знаком с тем, как работает MapReduce. Спасибо, что помогли мне.Hadoop MapReduce читать и записывать файл последовательности

ответ

0

Если все правильно, в методе Main() вы написали что-то вроде этого:

FileInputFormat.addInputPath() 
FileOutputFormat.setOutputPath() 

сказать Hadoop каталог, в котором, чтобы найти два входных файлов и где записать результаты вычислений.

Когда задание начинается, Hadoop начинает считывать файлы, которые он находит во входном каталоге, и вызывает метод map() преобразователя, передавая ему каждую строку файла (по одному в то время) в качестве аргумента. В конце вычисления, когда редуктор испускает свои данные, Hadoop собирается записывать результаты в один (или более) файлы в указанном каталоге вывода.

Итак, картографу и редуктору ничего не нужно знать о файлах ввода/вывода.

+0

Мне нужно прочитать два файла из hdfs и выполнить некоторую обработку. Может ли Mapper передавать две строки данных из двух разных файлов в map()? – kliangh

+0

Если во входном каталоге присутствуют два файла, Hadoop прочитает первый файл и передаст каждую строку этого файла методу map() в файле mapper; то он прочитает второй файл и передаст каждую строку этого файла методу map(). Вам нужна другая бизнес-логика для двух файлов? –

+0

Если бы я дал два каталога, то картограф передаст каждую строку из двух файлов последовательно, не так ли? Как я могу заставить метод mapper передавать две строки данных из двух разных файлов одновременно? – kliangh

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