InputFormat,OutputFormat,RecordReader

InputFormat

提供了两个方法:getSplits实现分片规则,createRecordReader读取数据规则K,V

  public abstract 
    List<InputSplit> getSplits(JobContext context
                               ) throws IOException, InterruptedException;
  
  /**
   * Create a record reader for a given split. The framework will call
   * {@link RecordReader#initialize(InputSplit, TaskAttemptContext)} before
   * the split is used.
   * @param split the split to be read
   * @param context the information about the task
   * @return a new record reader
   * @throws IOException
   * @throws InterruptedException
   */
  public abstract 
    RecordReader<K,V> createRecordReader(InputSplit split,
                                         TaskAttemptContext context
                                        ) throws IOException, 
                                                 InterruptedException;

 

Hadoop在org.apache.hadoop.mapreduce.lib.input包里提供了一些InputFormat的实现,有如下.

  • FileInputFormat: 这是一个抽象基类,可以作为任何基于文本输入的父类
  • SequenceFileInputFormat: 这是一个高效的二进制文件格式
  • TextInputFormat: 它用于普通文本文件

InputFormat并不局限于从文件读取数据

RecordReader

定义读数据的规则,一行一个KV:LineRecordReader

Hadoop在org.apache.hadoop.mapreduce.lib.input包里也提供了一些常见的RecordReader实现

  • LineRecordReader: 这是RecordReader类对文本文件的默认实现,它将行号时为键并将该行内容视为值
  • SequenceFileRecordReader: 该类从二进制文件SequenceFile读取键值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值