mapreduce------学生成绩(六)

该博客介绍了如何使用MapReduce进行学生成绩的分组统计,特别是在自定义分组类时需要注意的细节。文章通过一个实例展示了求每门课程平均分前三名的问题,数据包括课程、学生姓名及多次考试成绩。在解决过程中遇到了文件未输出和空指针错误,最终发现是自定义分组类缺失关键代码导致的问题。
摘要由CSDN通过智能技术生成
知识准备
  1. reducer类的操作对象是分区,一个分区初始化一次reducer类。reduce()函数的操作对象是组,一个分区中有几个分组就调用几次reduce()函数。
  2. 分组默认采用通过比较键的方式来实现。当自定义组合键时,往往需要根据组合键中的某一个属性进行分组统计,此时就用到自定义分组类。通过重写其中的compare()方法定义分组规则。
  3. 分组前先对合并后的分区文件中的记录进行排序,排序后再进行分组。分组是通过对排序后的记录从上往下遍历比对进行的。如果上下两个比对结果为0,则分到同一个组,否则各分一个组
  4. 当分组规则与排序规则不同时,需要另写一个分组类,并且分组的N个字段必须是排序的前N个字段,且顺序要一致。

下面通过一个实例进行说明:

题目

求每门课程平均分前三名

数据
computer,huangxiaoming,85,86,41,75,93,42,85
computer,xuzheng,54,52,86,91,42
computer,huangbo,85,42,96,38
english,zhaobenshan,54,52,86,91,42,85,75
english,liuyifei,85,41,75,21,85,96,14
algorithm,liuyifei,75,85,62,48,54,96,15
computer,huangjiaju,85,75,86,85,85
english,liuyifei,76,95,86,74,68,74,48
english,huangdatou,48,58,67,86,15,33,85
algorithm,huanglei,76,95,86,74,68,74,48
algorithm,huangjiaju,85,75,86,85,85,74,86
computer,huangdatou,48,58,67,86,15,33,85
english,zhouqi,85,86,41,75,93,42,85,75,55,47,22
english,huangbo,85,42,96,38,55,47,22
algorithm,liutao,85,75,85,99,66
computer,huangzitao,85,86,41,75,93,42,85
math,wangbaoqiang,85,86,41,75,93,42,85
computer,liujialing,85,41,75,21,85,96,14,74,86
computer,liuyifei,
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值