Hadoop 2.6.0 FileSplit和InputSplit和FileInputFormat

InputSplit 有三个方法

1.getLengh(),为了获取字节长度

2.getLocations(),获取地址,在哪个节点

3.该方法返回空,返回类型是可支持在内存中存储,或者磁盘存储。可以看出未来mapreduce有希望支持内存存储数据。

@Evolving

public SplitLocationInfo[] getLocationInfo() throws IOException {
return null;
}

 

--------------------------------分割线--------------------------------

FileSplit

1.属性如下:

private Path file;

private long start;
private long length;
private String[] hosts;
private SplitLocationInfo[] hostInfos;

 

序列化方法

@Override
public void readFields(DataInput in) throws IOException {
file = new Path(Text.readString(in));
start = in.readLong();
length = in.readLong();
hosts = null;
}

可以看出,序列化后读取,是不需要知道hosts的。

 

 --------------------------------分割线--------------------------------

FileInputFormat

getSplits方法:

1.首先获取文件

2.计算需要拆分成几个split

3.对每个split调用FileSplit构造函数

public FileSplit(Path file, long start, long length, String[] hosts,
String[] inMemoryHosts)

来设置split的信息

4.返回一个list

5.该list的size,是用来确定map任务数量的。

转载于:https://www.cnblogs.com/zjxbr/p/4446359.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值