Когда программа для чтения записей отправляет данные в маппер?
Позвольте мне ответить, дав вам представление о том, как связаны картограф и RecordReader. Это код Hadoop, который отправляет данные
к картографу. 1
RecordReader<K1, V1> input;
K1 key = input.createKey();
V1 value = input.createValue();
while (input.next(key, value)) {
// map pair to output
mapper.map(key, value, output, reporter);
if(incrProcCount) {
reporter.incrCounter(SkipBadRecords.COUNTER_GROUP,
SkipBadRecords.COUNTER_MAP_PROCESSED_RECORDS, 1);
}
}
По сути, Hadoop будет вызывать next
до тех пор, пока не вернет false
, и при каждом вызове key
и value
получат новые значения. Key
- обычно считанные байты и value
следующая строка в файле.
Где находится код, который отправляет данные в маппер?
Этот код находится в исходном коде hadoop (возможно, в классе MapContextImpl), но он напоминает то, что я написал в фрагменте кода.
РЕДАКТИРОВАТЬ : Исходный код: MapRunner .