Hadoop学习笔记(一)之示例程序:计算每年的最高温度MaxTemperature

来源:互联网 发布:圆方软件购买 编辑:程序博客网 时间:2024/04/30 21:30

转载自:http://www.cnblogs.com/beanmoon/archive/2012/12/07/2804183.html

链接保留 手打完再填坑

package testMapReduce;import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Job;import org.apache.hadoop.mapreduce.Mapper;import org.apache.hadoop.mapreduce.Reducer;import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;public class TestTemperature {public static class dataMapper extends Mapper<LongWritable,Text,Text,IntWritable>{private static final int MISSING=9999;public void map(LongWritable key,Text value,Context context)throws IOException,InterruptedException{String line=value.toString();String year=line.substring(15,19);int airTemperature;if(line.charAt(87) == '+'){airTemperature= Integer.parseInt(line.substring(88, 92));}else{airTemperature=Integer.parseInt(line.substring(87,92));}String quality=line.substring(92,93);if(airTemperature!=MISSING&&quality.matches("[01459]")){context.write(new Text(year), new IntWritable(airTemperature));}}}public static class dataReducer extends Reducer<Text,IntWritable,Text,IntWritable>{public void reduce(Text key,Iterable<IntWritable> values,Context context)throws IOException,InterruptedException{int maxValue=Integer.MIN_VALUE;for(IntWritable value:values){maxValue= Math.max(maxValue, value.get());}context.write(key, new IntWritable(maxValue));}}public static void main(String args[])throws Exception{Configuration conf=new Configuration();if(args.length!=2){System.err.println("missing in or out");System.exit(2);}Job job=new Job(conf,"TestTemperature");job.setJarByClass(TestTemperature.class);job.setMapperClass(dataMapper.class);job.setReducerClass(dataReducer.class);job.setCombinerClass(dataReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);FileInputFormat.addInputPath(job, new Path(args[0]));FileOutputFormat.setOutputPath(job,new Path(args[1]));System.exit(job.waitForCompletion(true)?0:1);}}


0 0
原创粉丝点击