1、構建新的作業
Configuration conf=getConf();
Job job=Job.getInstance(conf);
job.setJarByClass(SortYearAndTemp2.class);
2、設置輸入輸出目錄
Path inpath=new Path(conf.get("inpath"));
Path outpath=new Path(conf.get("outpath"));
FileInputFormat.addInputPath(job, inpath);
FileOutputFormat.setOutputPath(job, outpath);
3、設置Mapper Reducer函數
job.setMapperClass(SortYearAndTemp2.SortYearAndTemp2Mapper.class);
public static class SortYearAndTemp2Mapper extends Mapper
job.setReducerClass(SortYearAndTemp2.SortYearAndTemp2Reducer.class);
public static class SortYearAndTemp2Reducer extends Reducer
4、設置輸出格式
job.setMapOutputKeyClass(Weather.class);
job.setMapOutputValueClass(Text.class);
job.setOutputValueClass(Text.class);
job.setOutputKeyClass(NullWritable.class);
5、指定分區方式
job.setPartitionerClass(WeatherPartitioner.class); //參數為Partitioner的子類
創建Partitioner的子類:public static class WeatherPartitioner extends Partitioner
重寫getPartition()方法,返回int //指定分區方式
6、指定分組方式
job.setGroupingComparatorClass(WeatherGroup.class); //參數為WritableComparator的子類
創建WritableComparator的子類:public static class WeatherGroup extends WritableComparator
構造無參構造器WeatherGroup(){super(Weather, true);} //重寫父類帶有參數的構造器
重寫compare()方法 //指定分組方式
7、提交執行作業,等待作業完成之后退出虛擬機
return job.waitForCompletion(true)?0:1;
8、創建傳遞給key的類
public static class Weather implements WritableComparable
重寫write()方法 //序列化
重寫readFields()方法 //反序列化
重寫compareTo()方法 //規定key參數類的排序規則
設置set() get()方法
構造帶有全部參數和無參的構造器