1.Data input format
mapreduce输入的数据一般都是key/value形式的数据,形如<k1,v1>,一般情况下,mapreduce输入的都是big file的形式,怎么将file转换为key/value的形式呢?这就需要使用InputFormat接口。
下面几个常见的InputFormat的实现类:
输入数据的格式还可以自定义类,必须实现InputFormat这个接口,该接口中存在两个方法:
InputSpilt[] getSplits(JobConf job,int numSplits) throws IOException;//该接口方法实现了把大数据分割成split,其中每个InputSplit会产生一个map,map的输入定义在 // split中
RecordReader<K,V> getRecordReader(InputSplit split,JobConf job,Reporter reporter)throws IOException;
该方法输入分割的split,返回RecordReader,通过RecordReader遍历split的record。其中RecordReader决定map任务怎么读取输入的数据,例如是一行一行的读取还是一个字节一个字节的读取。
2.Data output format
每个reducer将自己的输出写入到结果文件中,这是使用output data format来配置输出的文件的格式。hadoop预先实现了: