Working of RecordReader in Hadoop

hadoop, mapreduce

Solution

(new API): The default Mapper class has a run method which looks like this:

public void run(Context context) throws IOException, InterruptedException {
    setup(context);
    while (context.nextKeyValue()) {
        map(context.getCurrentKey(), context.getCurrentValue(), context);
    }
    cleanup(context);
}

The `Context.nextKeyValue()`, `Context.getCurrentKey()` and `Context.getCurrentValue()` methods are wrappers for the `RecordReader` methods. See the source file `src/mapred/org/apache/hadoop/mapreduce/MapContext.java`.

So this loop executes and calls your Mapper implementation's `map(K, V, Context)` method.

Specifically, what else would you like to know?

Problem

Can anyone explain how the RecordReader actually works? How are the methods `nextkeyvalue()`, `getCurrentkey()` and `getprogress()` work after the program starts executing?

Original source