9

谁能解释 RecordReader 的实际工作原理?程序开始执行后方法nextkeyvalue()getCurrentkey()工作如何?getprogress()

4

2 回答 2

14

(新 API):默认 Mapper 类有一个 run 方法,如下所示:

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()RecordReadersrc/mapred/org/apache/hadoop/mapreduce/MapContext.java

所以这个循环执行并调用你的 Mapper 实现的map(K, V, Context)方法。

具体来说,您还想知道什么?

于 2012-06-08T10:53:48.383 回答
0

org.apache.hadoop.mapred.MapTask - runNewMapper()

实施步骤:

  1. 创建新的映射器

  2. 获取映射器的输入拆分

  3. 获取拆分的记录仪

  4. 初始化记录阅读器

  5. 使用记录阅读器遍历 getNextKeyVal() 并将 key,val 传递给映射器映射方法

  6. 清理

于 2016-01-15T16:18:52.943 回答