RecordReader如何向Hadoop中的mapper发送数据
How does RecordReader send data to mapper in Hadoop
我是 Hadoop 新手,目前正在学习 Donald Miner 和 Adam Shook MapReduce 设计模式一书中的 mapreduce 设计模式。所以在这本书中有笛卡尔积模式。我的问题是:
- record reader什么时候发送数据给mapper?
- 将数据发送到映射器的代码在哪里?
我看到的是 CartesianRecordReader 中的下一个函数 class 读取两个拆分而不发送数据。
就这些了,先谢谢了:)
When does record reader send data to mapper?
让我通过让您了解映射器和 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
直到它 returns false
,并且每次调用 key
和 value
都会获得新值。 Key
通常是到目前为止读取的字节,value
文件中的下一行。
Where is the code that send the data to mapper?
该代码位于 hadoop 的源代码中(可能在 MapContextImpl class 中),但它类似于我在代码片段中编写的内容。
EDIT :源代码位于 MapRunner.
我是 Hadoop 新手,目前正在学习 Donald Miner 和 Adam Shook MapReduce 设计模式一书中的 mapreduce 设计模式。所以在这本书中有笛卡尔积模式。我的问题是:
- record reader什么时候发送数据给mapper?
- 将数据发送到映射器的代码在哪里?
我看到的是 CartesianRecordReader 中的下一个函数 class 读取两个拆分而不发送数据。
就这些了,先谢谢了:)
When does record reader send data to mapper?
让我通过让您了解映射器和 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
直到它 returns false
,并且每次调用 key
和 value
都会获得新值。 Key
通常是到目前为止读取的字节,value
文件中的下一行。
Where is the code that send the data to mapper?
该代码位于 hadoop 的源代码中(可能在 MapContextImpl class 中),但它类似于我在代码片段中编写的内容。
EDIT :源代码位于 MapRunner.