Hadoop中MapReduce程序的输入处理

一个典型的MapReduce程序的处理过程如下:

1
2
map: (K1, V1) -> list(K2, V2)
reduce: (K2, list(V2)) -> list(K3, V3)

如果不设置mapreduce.inputformat.class,那么会使用TextInputFormat来处理输入。

抽象类org.apache.hadoop.mapreduce.InputFormat<K, V>声明了两个抽象方法
1.getSplits 返回一个InputSplit集合
2.createRecordReader返回一个RecordReader<K,V>

一个InputSplit表示被一个单独Mapper处理的数据,
RecordReader 则可以迭代返回InputSplit内容成Key-Value对给MapperMap函数处理