2015-08-06 7 views
4

Из док Apache на Hadoop MapReduce InputFormat Интерфейс:Hadoop MapReduce Реализация RecordReader необходима?

"[L] ogical расщепляется на основе входного размера недостаточно для многих приложений, так как запись границы должны соблюдаться В таких случаях. , приложение должно также реализовать RecordReader на которого лежит responsibilty уважать RECORD-границы и представить записи-ориентированный вид логического InputSplit а на индивидуальной задачи «.

Является ли пример приложения WordCount, в котором логические расщепления на основе размера ввода недостаточны? Если да, то где в исходном коде обнаружена реализация RecordReader?

ответ

3

Входы ввода являются логическими ссылками на данные. Если вы посмотрите на API, вы увидите, что он ничего не знает о границах записей. Для каждого входного разделения запускается картограф. Для каждой записи запускается файлmapperper (в программе WordCount каждая строка в файле).

Но как картограф знает, где находятся границы записи?

Это где ваша цитата из Hadoop MapReduce InputFormat интерфейс приходит -

приложение должно также осуществить RecordReader на которых лежит responsibilty уважать RECORD-границы и представить записи-ориентированный вид логического InputSplit к отдельной задаче

Каждый картограф связан с InputFormat. То, что InputFormat содержит информацию, для которой используется RecordReader. Посмотрите на API, вы обнаружите, что он знает о входных расколах и о том, какой считыватель данных использовать. Если вы хотите узнать больше о входных расколах и записывающем устройстве, вам следует прочитать ответ this.

A RecordReader определяет границы записи; InputFormat определяет, что используется RecordReader.

Программа WordCount не указывает InputFormat, поэтому по умолчанию она равна TextInputFormat, которая использует LineRecordReader и выдает каждую строку как другую запись.И this исходный код


[L] ogical расщепляется на основе входного размера недостаточно для многих приложений, так как запись границы должны соблюдаться.

Что это означает, что, для примера файла, такие как

a b c d e 
f g h i j 
k l m n o 

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

a b c d e 
f g 

и

h i j 
k l m n 0 

Если бы это было не для RecordReader, это было бы считать f g и h i j - разные записи; Понятно, что это не то, чего хотят большинство приложений.

Ответ на ваш вопрос, в программе WordCount, не имеет значения, каковы границы записей, но есть вероятность, что одно и то же слово разделено на разные логические разрывы. Поэтому логические расщепления на основе размера недостаточны для программы WordCount.

Каждая карта RecordReduce «уважает» границы записи. В противном случае это не очень полезно.

0

Вы не можете увидеть реализацию RecorderReader в WordCount Example, поскольку она использует DefaultReadReader и default InputSplit, указанные в структуре.

Если вы хотите увидеть их реализацию, вы можете найти его в исходном коде Hadoop.

Для получения дополнительной информации о считывателях рекордеров и о том, как они работают, pl. см.: https://hadoopi.wordpress.com/2013/05/27/understand-recordreader-inputsplit/

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

  • Нет связанных вопросов^_^