通常我们直接使用FileInputFormat,但是使用多了我们就会发现,它无法满足我们所有的需求,因为它只能看路径加载,那么多路径怎么办呢,下面我给大家准备的例子就可以帮到大家
public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
Configuration cfg = new Configuration();
//获取到任务
Job job = Job.getInstance(cfg);
job.setJarByClass(SumDriver.class);
//对输入输出参数设置
// Text, IntWritable
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
//设置map reduce类
job.setMapperClass(DeleteAginMapper.class);
job.setReducerClass(DeleteAginReducer.class);
/**
* 添加多个路径使用MultipleInputs.addInputPath
* 该方法支持参数为job 路径 inputformat实现类
* 或者
* job 路径 inputformat实现类 mapper类
*/
MultipleInputs.addInputPath(job, new Path("D:\\a\\suminput"),FileInputFormat.class);
MultipleInputs.addInputPath(job, new Path("D:\\a\\suminput"),FileInputFormat.class,DeleteAginMapper.class);
//设置输入输出路径
//FileInputFormat.setInputPaths(job, new Path("D:\\a\\suminput"));
FileOutputFormat.setOutputPath(job, new Path("D:\\a\\sumoutput"));
boolean b = job.waitForCompletion(true);
System.exit(b == true ? 0 : -1);
}