hadoop权威指南阅读(一)

来源:互联网 发布:h是几g网络 编辑:程序博客网 时间:2024/05/29 11:16
 1.任务:查找所有年份最高气温
 1)MaxTemperatureMapper.class
 map的目的是吐出点对,年份=>气温
 output.collect(new Text(year),new IntWritable(airTemperature));
 key可以重复,例如可以是
 1950 23
 1950 22
 1950 28
 2)MaxTemperatureReducer.class
 reducer的目的,是针对输入的所有key values;计算最终值,这里的输入就相当于 1950 => array(23,22,28)了
   int maxValue = 0;
   while(values.hasNext())
   {
if(values.next().get()> maxValue)
{
maxValue = values.next().get();
}
output.collect(key,new IntWritable(maxValue)); //这里如果输入是上面说的1950的数据,输出就是 1950 28
   }


3)进行实际操作 
...
conf.setMapperClass(MaxTemperatureMapper.class);
conf.setReducerClass(MaxTemperatureReducer.class);
...
JobClient.runJob(conf);


4)合并结果集的操作类
在这里复用MaxTemperatureReducer.class
conf.setCombinerClass(MaxTemperatureReducer.class);
因为结果集合会是
1950 28
1951 22
1952 23
的样式








原创粉丝点击