案例:对1901 1902文件中统计的气温进行排序,reduceNum=2
part-r-0001
1901 ...
1901 ...
part-r-0002
1902 ...
1902 ...
public class AirMapper extends Mapper<LongWritable, Text, IntWritable, Text>{
@Override
protected void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
//将value转成字符串类型,进行截取年份和温度
String line = value.toString();
//获取年份
String year = line.substring(15, 19);
//定义温度变量
int temp;
if(line.charAt(87)=='+') {
temp =Integer.parseInt(line.substring(88,92));
}else {
temp =Integer.parseInt(line.substring(87,92));
}
String code = line.substring(92,93);
if(temp!=9999&&code.matches("[01459]")) {
//转换年份的类型为输出类型
Text yearT = new Text(year);
//转换温度的类型为输出类型
IntWritable temperature = new IntWritable(temp);
context.write(temperature, yearT);//将数据写出
}
}
}
public class AirReducer extends Reducer<IntWritable, Text