【问题标题】:How does RecordReader send data to mapper in HadoopRecordReader如何向Hadoop中的mapper发送数据
【发布时间】:2018-11-18 18:31:58
【问题描述】:
【问题讨论】:
标签:
hadoop
mapreduce
mapper
recordreader
【解决方案1】:
记录阅读器何时向映射器发送数据?
让我回答一下映射器和 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 类中),但它类似于我在代码 sn-p 中编写的内容。
编辑:源代码在MapRunner。