谁能解释一下RecordReader的实际工作原理?程序开始执行后,nextkeyvalue()
、getCurrentkey()
和getprogress()
的方法如何工作?
(新API):默认的Mapper类有一个运行方法,如下所示:
public void run(Context context) throws IOException, InterruptedException {
setup(context);
while (context.nextKeyValue()) {
map(context.getCurrentKey(), context.getCurrentValue(), context);
}
cleanup(context);
}
Context.nextKeyValue()
、Context.getCurrentKey()
和 Context.getCurrentValue()
方法是RecordReader
方法的包装器。请参阅源文件src/mapred/org/apache/hadoop/mapreduce/MapContext.java
。
因此,此循环执行并调用映射器实现的map(K, V, Context)
方法。
具体来说,你还想知道什么?
org.apache.hadoop.mapred.MapTask- 运行新映射器()
操作步骤:
-
创建新的映射器
-
获取映射器的输入拆分
-
获取拆分的记录读取器
-
初始化记录读取器
-
使用记录读取器遍历getNextKeyVal()并将Key,Val传递给映射器映射方法
-
收拾