public class MaxTemp { static { System.setProperty("hadoop.home.dir", "D:\\hadoop\\hadoop-2.8.3"); } public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException { //初始化job Configuration conf = new Configuration(); Job job = Job.getInstance(conf, "MaxTemp"); //输入文件 FileInputFormat.addInputPath(job,new Path(args[0])); //mapper计算 job.setMapperClass(MyMapper.class); //shuffle //reduce计算 job.setReducerClass(MyReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(Text.class); //输出 FileOutputFormat.setOutputPath(job,new Path(args[1])); //提交 boolean result = job.waitForCompletion(true); System.out.println(result?1:0); } public static class MyMapper extends Mapper<LongWritable,Text,Text,Text> { @Override protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { String s = value.toString(); String[] split = s.split("\\s"); String year = split[0].substring(0, 4); context.write(new Text(year),value); } } public static class MyReducer extends Reducer<Text,Text,Text,Text> { @Override protected void reduce(Text key, Iterable<Text> values, Context context) throws IOException, InterruptedException { Double maxTemp = Double.MIN_VALUE; String day = null; for(Text value : values){ String s = value.toString(); String[] split = s.split("\\s"); Double temp = Double.parseDouble(split[1]); if (temp>maxTemp){ day = split[0]; maxTemp=temp; } } context.write(key,new Text(day+" "+maxTemp)); } } }
mapreduce最高气温
最新推荐文章于 2022-05-30 15:10:28 发布