hadoop源码阅读(一)(InputFormat源码)

Inputformat的介绍

在这里插入图片描述

官方英文文档:大致的意思是InputFormat是MapReduce框架用于处理输入的job
1.它用来验证job的输入规范
2.将输入文件切开,每个被切开的文件被分配到单独的Mapper中
3.提供RecordReader(抽象方法),用来收集Mapper的输入数据,说人话就是怎么读取数据就由这个RecordReader方法来提供的
4.FileInputFormat是最常的子类等等

1. InputFormat的继承树

查看InputFormat类

在这里插入图片描述

查看父子类关系(ctrl+h)

在这里插入图片描述

在这里我们主要看的是InputFormatFileInputFormatTextInputFormat,先从InputFormat开始看。

Alt+7查看类中的所有方法

在这里插入图片描述

1.1 InputFormat源码:

public abstract class InputFormat<K, V> {

	public abstract List<InputSplit> getSplits(JobContext context
) throws IOException, InterruptedException;
          
    public abstract RecordReader<K,V> createRecordReader(InputSplit
split,TaskAttemptContext context) throws IOException, InterruptedException;      
}

InputFormat类是抽象类,getSplitscreateRecordReader都被声明成抽象方法

getSplits:用来生成切片信息
createRecordReader:用来创建RecordReader对象。RecordReader是用来读取数据的。

1.2 FileInputFormat源码:

在这里插入图片描述

官方英文文档

FileInputFormat类是抽象类继承InputFormat重写了它的getSplits的抽象方法:

在这里插入图片描述

1.3 TextInputFormat源码

在这里插入图片描述

TextInputFormat作为FileInputFormat默认使用的InputFormat,它重写了createRecordReader,在createRecordReader方法内返回了一个LineRecordReader对象。LineRecordReader是真正用来读取数据的类,我们走进LineRecordReader。

在这里插入图片描述

LineRecordReader继承自RecordReader,RecordReader是抽象类

在这里插入图片描述
在这里插入图片描述

具体代码细节在:
link切片源码有详细说明,本篇主要是讲述InputFormat的目录结构

XMind图后面补

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值