FileInputFormat实现类
思考:在运行MapReduce程序时,输入的文件格式包括:基于行的日志文件、
二进制格式文件、数据库表等。那么,针对不同的数据类型,MapReduce是如
何读取这些劣如据的呢?
FileInputFormat常见的接口实现类包括:TextInputFormat .
KeyValueTextInputFormat、NLineInputFormat、CombineTextInputFormat和自定义
InputFormat等。
1.TextlnputFormat
TextInputFormat是默认的FileInputFormat实现类。按行读取每条记录。键是存储该行在整个文件中的
起始字节偏移量,LongWritable类型。值是这行的内容,不包括任何行终止符(换行符和回车符),
Text类型。
2.KeyValueTextlnputFormat
每一行均为一条记录,被分隔符分割为key , value。可以通过在驱动类中设置
conf.st(KeyValueLineRecordReader.KEY_VALUE_SEPERATOR,”t”);,来设定分隔符。默认分隔符是tab (t)。
以下是一个示例,输入是一个包含4条记录的分片。其中——>表示一个(水平方向的)利表符。
3.NLinelnputFormat
如果使用NlineInputFormat,代表每个map进程处理的InputSplit不再按Block块去划分,而是按
NlineInputFormat指定的行数N来划分。即输入文件的总行数/N切片数,如果不整除,切片数=商+1。
以下是一个示例,仍然以上面的4行输入为例。