Входы ввода являются логическими ссылками на данные. Если вы посмотрите на 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 «уважает» границы записи. В противном случае это не очень полезно.