MapReduce实战案例1

本文通过MapReduce实战案例,展示了如何统计每个班级学生的出勤率、旷课总天数和出勤总天数。数据源包含class20、class21、class22三个班级的月度考勤记录,最终结果按出勤率倒叙排列,并将各班统计结果输出到不同文本文件。
摘要由CSDN通过智能技术生成

问题描述

班级,姓名,是否出勤(0:未出勤;1:出勤),是否迟到(0:未迟到,1:迟到),每月每人总的考勤统计为4天
现有class20、class21、class22、三个班级的月度考勤主要涵盖学生信息(学生的班级、姓名、是否旷课、是否迟到、考勤日期等)
1.统计出每个同学月度的出勤率(出勤总天数/(未出勤天数+出勤天数)),旷课总天数、出勤总天数、根据出勤率排序,倒叙排列
输出数据格式如下
班级 姓名 出勤率 出勤总天数 未出勤天数
class20 sunliu 50 2 2
2.将各班学生的统计结果,分开输出到不同的文本中,并根据出勤率排序,倒叙排列

数据源

class20,lisi,1,0,09-01
class20,lisi,1,0,09-07
class20,lisi,1,0,09-15
class20,lisi,1,0,09-25
class20,sunliu,1,0,09-01
class20,sunliu,0,0,09-07
class20,sunliu,0,0,09-15
class20,sunliu,1,0,09-25
class20,zhaoqi,1,0,09-01
class20,zhaoqi,1,0,09-07
class20,zhaoqi,1,0,09-15
class20,zhaoqi,1,0,09-25
class20,changyang,1,0,09-01
class20,changyang,1,1,09-07
class20,changyang,0,0,09-15
class20,changyang,1,0,09-25
class21,jingkun,1,0,09-01
class21,jingkun,0,0,09-07
class21,jingkun,0,0,09-15
class21,jingkun,1,0,09-25
class21,xian,1,0,09-01
class21,xian,1,0,09-07
class21,xian,1,0,09-15
class21,xian,1,0,09-25
class21,renming,1,0,09-01
class21,renming,0,0,09-07
class21,renming,1,1,09-15
class21,renming,1,0,09-25
class21,jingkun,1,0,09-01
class21,jingkun,0,0,09-07
class21,jingkun,0,0,09-15
class21,jingkun,1,0,09-25
class22,xian,1,0,09-01
class22,xian,1,1,09-07
class22,xian,1,0,09-15
class22,xian,1,0,09-25
class22,zhaosi,1,1,09-01
class22,zhaosi,1,1,09-07
class22,zhaosi,1,1,09-15
class22,zhaosi,1,1,09-25
class22,jingshui,1,0,09-01
class22,jingshui,1,1,09-07
class22,jingshui,1,1,09-15
class22,jingshui,1,1,09-25
class22,liuzhi,1,0,09-01
class22,liuzhi,1,1,09-07
class22,liuzhi,1,0,09-15
class22,liuzhi,1,1,09-25

代码实现

1.bean对象
package com.zj.mergine_test;

import org.apache.hadoop.io.WritableComparable;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;

public class stu_bean implements WritableComparable<stu_bean> {
   
    // 班级
    private String grade;
    // 姓名
    private String name;
    // 是否出勤
    private int participation;
    // 是否迟到
    private int late;
    // 日期
    private String date;
    // 出勤率
    private float attendanceRate;
    // 出勤天数
    private float workday;
    // 未出勤天数
    private float no_workday;

    public stu_bean() {
   
    }

    public stu_bean(String grade, String name, int participation, int late, String date, float attendanceRate, float workday, float no_workday) {
   
        this.grade = grade;
        this.name = name;
        this.participation = participation;
        this.late = late;
        this.date = date;
        this.attendanceRate = attendanceRate;
        this.workday = workday;
        this.no_workday = no_workday;
    }


    public String getGrade() {
   
        return grade;
    }

    public void setGrade(String grade) {
   
        this.grade = grade;
    }

    public String getName() {
   
        return name;
    }

    public void setName(String name) {
   
        this.name = name;
    }

    public int getParticipation() {
   
        return participation;
    }

    public void setParticipation(int participation) {
   
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值