整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

7.2.1.5. 避免切分

hadoop 花牛 8℃ 0评论

有些应用程序可能不希望文件被切分,而是用一个mapper完整处理每一个输入文件。例如,检査一个文件中所有记录是否有序,一个简单的方法是顺序扫描毎一条记录并且比较后一条记录是否比前一条要小。如果将它实现为一个map任务,那么只有一个map操作整个文件时,这个算法才可行。

有两种方法可以保证输入文件不被切分。第一种(最简单但不怎么漂亮)方法就是增加最小分片大小,将它设置成大于要处理的最大文件大小。把它设置为最大值Long.MAX_VALUE即可。第二种方法就是使用 FilelnputFormat具体子类,并且重载isSplitable()方法把返回值设 置为false。例如,以下就是一个不可分割的TexInputFormat:

import org.apache.hadoop.fs.path;
import org.apache.hadoop.mapreduce.DobContenxt;
import org.apache.hadoop.mapreduce.lib.input.TextInpusFormat;
public class NonSplittableTextInputFormat extends TextlnputFormat {
    @override
    protected boolean isSplitable(JobContext context, Path file) {
        return false;
    }
}

转载请注明:全栈大数据 » 7.2.1.5. 避免切分

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址