Hadoop——利用MapReduce求平均成绩

Posted mmい

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop——利用MapReduce求平均成绩相关的知识,希望对你有一定的参考价值。

环境配置

在linux中使用Eclipse编译运行MapReduce程序请参考这篇文章

数据集

输入数据集每一行是学生的名字和学生的成绩(一个学生可有多门学科成绩);
在本地生成file1.txt file2.txt file3.txt三个文件并且上传到hdfs上的averageScore文件夹;

源代码

    public static class Map extends Mapper<LongWritable,Text,Text,IntWritable>
        public void map(LongWritable key,Text value,Context context)throws IOException,InterruptedException
            String line = value.toString(); //change text to String
            StringTokenizer tokenizerArticle = new StringTokenizer(line,"\\n"); //cut input  to lines
            while(tokenizerArticle.hasMoreElements())
                StringTokenizer tokenizerLine = new StringTokenizer(tokenizerArticle.nextToken());
                String strName = tokenizerLine.nextToken(); //name
                String strScore = tokenizerLine.nextToken(); //score
                Text name = new Text(strName);
                System.out.println(strScore);
                System.out.println(name);
                int scoreInt = Integer.parseInt(strScore);
                context.write(name, new IntWritable(scoreInt));
            
        
    
    public static class Reduce extends Reducer<Text,IntWritable,Text,IntWritable>
        public void reduce(Text key,Iterable<IntWritable> values,Context context)throws IOException,InterruptedException
            int sum = 0;
            int count = 0;
            Iterator<IntWritable> iterator = values.iterator();
            while(iterator.hasNext())
                sum += iterator.next().get();
                count++;
            
            int averageScore = (int)sum/count;
            System.out.println(key);
            System.out.println(sum);
            context.write(key, new IntWritable(averageScore));
        
       

结果

使用命令行模式编译运行hadoop程序

以上是关于Hadoop——利用MapReduce求平均成绩的主要内容,如果未能解决你的问题,请参考以下文章

java利用数组求平均成绩

细节拉满Hadoop课程设计项目,使用idea编写基于MapReduce的学生成绩分析系统(附带源码项目文件下载地址)

2018-07-25期 MapReduce求部门工资总和及平均工资

Mapreduce实例--求平均值

[hadoop]怎么把两个mapreduce工程合起来

用数组求一个班级的平均成绩,请写出Java设计程序。