如果没有给Job设置Mapper和Reducer,则将会使用默认的Mapper和Reducer。默认的Mapper和Reducer什么都不会做,只是进行文件的快速复制,如【代码4-8】所示。此代码中,并没有设置Mapper和Reducer类,将会使用默认的Mapper和Reducer类。
【代码4-8】DefaultMR.java
1. package org.hadoop.dft; 2. public class DefaultMR extends Configured implements Tool { 3. @Override 4. public int run(String[] args) throws Exception { 5. if(args.length!=2){ 6. System.out.println("usage : <in> <out>"); 7. return -1; 8. } 9. Configuration conf = getConf(); 10. Job job = Job.getInstance(conf,"DefaultMR"); 11. job.setJarByClass(this.getClass()); 12. FileSystem fs = FileSystem.get(conf); 13. if(fs.exists(new Path(args[1]))){ 14. fs.delete(new Path(args[1]),true); 15. } 16. FileInputFormat.setInputPaths(job,new Path(args[0])); 17. FileOutputFormat.setOutputPath(job,new Path(args[1])); 18. int code = job.waitForCompletion(true)?0:1; 19. return code; 20. } 21. public static void main(String[] args) throws Exception { 22. int code = ToolRunner.run(new DefaultMR(),args); 23. System.exit(code); 24. } 25. } 26.