MapReduce输入的处理类

1、FileInputFormat:
FileInputFormat是所有以文件作为数据源的InputFormat实现的基类,FileInputFormat保存作为job输入的所有文件,并实现了对输入文件计算splits的方法。至于获得记录的方法是有不同的子类——TextInputFormat进行实现的。
2、InputFormat:
InputFormat 负责处理MR的输入部分.有三个作用:
验证作业的输入是否规范.
把输入文件切分成InputSplit.
提供RecordReader 的实现类,把InputSplit读到Mapper中进行处理
3、InputSplit:
(1)在执行mapreduce之前,原始数据被分割成若干split,每个split作为一个map任务的输入,在map执行过程中split会被分解成一个个记录(key-value对),map会依次处理每一个记录。
(2)FileInputFormat只划分比HDFS block大的文件,所以FileInputFormat划分的结果是这个文件或者是这个文件中的一部分.                
(3)如果一个文件的大小比block小,将不会被划分,这也是Hadoop处理大文件的效率要比处理很多小文件的效率高的原因。
(4)当Hadoop处理很多小文件(文件大小小于hdfs block大小)的时候,由于FileInputFormat不会对小文件进行划分,所以每一个小文件都会被当做一个split并分配一个map任务,导致效率底下。
4、TextInputFormat:
(1)TextInputformat是默认的处理类,处理普通文本文件。
(2)文件中每一行作为一个记录,他将每一行在文件中的起始偏移量作为key,每一行的内容作为value。
(3)默认以\n或回车键作为一行记录。
(4)TextInputFormat继承了FileInputFormat。

你可能感兴趣的:(MapReduce)