Hadoop 学习笔记 (十一) MapReduce 求平均成绩
2014-03-18 17:36
393 查看
china: 张三78 李四89 王五96 赵六67 english 张三80 李四82 王五84 赵六86 math 张三88 李四99 王五66 赵六77 importjava.io.IOException; importorg.apache.hadoop.conf.Configuration; importorg.apache.hadoop.fs.Path; importorg.apache.hadoop.io.IntWritable; importorg.apache.hadoop.io.FloatWritable; importorg.apache.hadoop.io.Text; importorg.apache.hadoop.mapreduce.Job; importorg.apache.hadoop.mapreduce.Mapper; importorg.apache.hadoop.mapreduce.Reducer; importorg.apache.hadoop.mapreduce.lib.input.FileInputFormat; importorg.apache.hadoop.mapreduce.lib.input.TextInputFormat; importorg.apache.hadoop.mapreduce.lib.output.FileOutputFormat; importorg.apache.hadoop.mapreduce.lib.reduce.IntSumReducer; publicclassMyAverage{ publicstaticclassFormatMapperextendsMapper<Object,Text,Text,IntWritable>{ privateIntWritableval=newIntWritable(); publicvoidmap(Objectkey,Textvalue,Contextcontext)throwsIOException,InterruptedException{ Stringline[]=value.toString().split("\\s"); val.set(Integer.parseInt(line[1])); context.write(newText(line[0]),val); } } publicstaticclassAverageReducerextendsReducer<Text,IntWritable,Text,FloatWritable>{ publicvoidreduce(Textkey,Iterable<IntWritable>values,Contextcontext)throwsIOException,InterruptedException{ intcount=0; intsum=0; for(IntWritableval:values){ sum+=val.get(); count++; } floatave=(float)sum/count; context.write(key,newFloatWritable(ave)); } } publicstaticvoidmain(String[]args)throwsException{ Stringdir_in="hdfs://localhost:9000/in_average"; Stringdir_out="hdfs://localhost:9000/out_average"; Pathin=newPath(dir_in); Pathout=newPath(dir_out); Configurationconf=newConfiguration(); JobaverageJob=newJob(conf,"my_average"); averageJob.setJarByClass(MyAverage.class); averageJob.setInputFormatClass(TextInputFormat.class); averageJob.setMapperClass(FormatMapper.class); averageJob.setCombinerClass(IntSumReducer.class); //countJob.setPartitionerClass(HashPartitioner.class); averageJob.setMapOutputKeyClass(Text.class); averageJob.setMapOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(averageJob,in); averageJob.setReducerClass(AverageReducer.class); //averageJob.setNumReduceTasks(1); averageJob.setOutputKeyClass(Text.class); averageJob.setOutputValueClass(FloatWritable.class); //countJob.setOutputFormatClass(SequenceFileOutputFormat.class); FileOutputFormat.setOutputPath(averageJob,out); averageJob.waitForCompletion(true); } }
张三82.0 李四90.0 王五82.0 赵六76.666664
相关文章推荐
- Hadoop学习笔记:MapReduce框架详解
- hadoop 学习笔记:mapreduce框架详解
- hadoop 学习笔记 (十) mapreduce2.0
- 【hadoop学习笔记】How MapReduce Works
- Hadoop学习笔记:MapReduce框架详解
- Hadoop学习笔记(八)MapReduce深入分析
- Hadoop 学习笔记一 ---MapReduce 的输入和输出
- Hadoop学习笔记2:eclipse运行Mapreduce程序问题总结
- hadoop 学习笔记:mapreduce框架详解
- hadoop学习笔记:mapreduce框架详解
- Hadoop学习笔记:MapReduce框架详解
- hadoop菜鸟学习笔记--MapReduce笔记
- Hadoop学习笔记:MapReduce框架详解
- 云计算学习笔记005---Hadoop HDFS和MapReduce 架构浅析
- hadoop 学习笔记:mapreduce框架详解
- Hadoop MapReduce学习笔记 SQL查询
- Hadoop学习笔记: MapReduce二次排序
- Hadoop学习笔记(5)———Mapreduce工作原理
- Hadoop学习之mapreduce:Shuffle 过程笔记
- 【学习笔记】用Hadoop在MapReduce中WordCount简单程序运行详细流程