有些应用程序可能不希望文件被切分, 而是用一个mapper完整处理每一个输入文件,例如检查一个文件中所有记录是否有序,一个简单的方法是顺序扫描每一条记录并且比较后一条记录是否比前一条要小。如果将它实现为一个map任务, 那么只有一个map操作整个文件时, 这个算法才可行。
有两种方法可以保证输入文件不给切分,
A 最简单但是不怎么漂亮( 增加最小分片大小, 将他设置成大于要处理的最大文件大小, 把他设置为 最大值long.MAX_VALUE即可。
B 使用FileInputFormat具体的子类,并且重载 isSplitable方法 把返回值设置为false。
例如一下就是一个不课分割的TextInputFomat
public class NoSplittableTextInputFormat extends TextInputFormat{
@override
protected boolean isSplitable(JobContext context,Path file){
return false;
}
hadoop权威指南 page=259