InputFormat:
InputFormat描述了Map-Reduce作业的输入规范。
Map-Reduce框架依赖于作业的InputFormat:
1.验证job的输入规范。
2.将输入文件分解为逻辑inputsplit,每个inputsplit都被分配给一个单独的mapper。
3.提供RecordReader实现,用于从逻辑InputSplit中收集输入记录,以便mapper进行处理。
基于文件的inputformat(通常是FileInputFormat的子类)的默认行为是根据输入文件的总大小(以字节为单位)
将输入拆分为逻辑inputsplit。但是,输入文件的文件系统块大小被视为输入分割的上限。
可以通过mapreduce.input.fileinputformat.split.minsize设置分割大小的下界。
FileInputFormat:
isSplitable(FileSystem fs, Path filename)
是否切分
getSplits(JobConf job, int numSplits)
获取逻辑切分
TextInputFormat:
FileInputFormat默认使用这个
isSplitable是否可切分
判断是否压缩,如果没有压缩返回true
判断是否属于可以切分的压缩模式,若属于返回true
LineRecordReader:
将键视为文件中的偏移量,将值视为行。
next()
给下一个KV赋值