TextInputFormat源码

TextInputFormat是FileInputFormat的子类,其createRecordReader()方法返回的就是LineRecordReader。


  1. public class TextInputFormat extends FileInputFormat<LongWritable, Text> {  
  2.   
  3.   @Override  
  4.   public RecordReader<LongWritable, Text>   
  5.     createRecordReader(InputSplit split,  
  6.                        TaskAttemptContext context) {  
  7.     return new LineRecordReader();  
  8.   }  
  9.   
  10.   @Override  
  11.   protected boolean isSplitable(JobContext context, Path file) {  
  12.     CompressionCodec codec =   
  13.       new CompressionCodecFactory(context.getConfiguration()).getCodec(file);  
  14.     return codec == null;  
  15.   }  


  16.   我们还看到isSplitable()方法,当文件使用压缩的形式,这个文件就不可分割,否则就读取不到正确的数据了。这从某种程度上将影响分片的计算。 有时我们希望一个文件只被一个Mapper处理的时候,我们就可以重写isSplitable()方法,告诉MapReduce框架,我哪些文件可以分 割,哪些文件不能分割而只能作为一个分片。

你可能感兴趣的:(Hadoop)