码迷,mamicode.com
首页 > 其他好文 > 详细

Hadoop 2.6.0 FileSplit和InputSplit和FileInputFormat

时间:2015-04-22 09:23:45      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:

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任务数量的。

Hadoop 2.6.0 FileSplit和InputSplit和FileInputFormat

标签:

原文地址:http://www.cnblogs.com/zjxbr/p/4446359.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!