学习目标:MapReduce统计部门员工

员工数据

孙悟空  23  西游部 筋斗云
武松  33  水浒部 醉拳
关胜  32  水浒部 大刀
猪八戒 21  西游部 吃吃吃
贾宝玉 21  红楼部 呵呵
林黛玉 16  红楼部 嘻嘻
沙僧  25  西游部 潜水
王熙凤 46  红楼部

提示:有一个员工缺少一个技能属性字段

学习内容:现根据员工的组别进行自然排序,之后按照年龄排序

实体类


import org.apache.hadoop.io.WritableComparable;import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;public class Employees implements WritableComparable<Employees> {private String name;private int age;private String department;private String skill;public Employees() {super();}public Employees(String name, int age, String department, String skill) {this.name = name;this.age = age;this.department = department;this.skill = skill;}public void setEmployees(String name, int age, String department) {this.skill="";this.name = name;this.age = age;this.department = department;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getDepartment() {return department;}public void setDepartment(String department) {this.department = department;}public String getSkill() {return skill;}public void setSkill(String skill) {this.skill = skill;}@Overridepublic void write(DataOutput out) throws IOException {out.writeUTF(name);out.writeInt(age);out.writeUTF(department);out.writeUTF(skill);}@Overridepublic void readFields(DataInput in) throws IOException {System.out.println("序列化————————————————————————————————————————————————");this.name=in.readUTF();this.age=in.readInt();this.department=in.readUTF();this.skill=in.readUTF();}@Overridepublic String toString() {return  name + '\t'+ +age +'\t'+ department + '\t' + skill ;}@Overridepublic int compareTo(Employees o) {//先根据第一个组别进行判断,现根据组别自然排序,在进行年龄排序int i = this.department.compareTo(o.department);if (0 ==i){return Integer.valueOf(this.age).compareTo(o.age);}return i;}
}

Mapper

import mapreduce.entity.Employees;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;import java.io.IOException;public class Mapper_sort_group extends Mapper<LongWritable, Text, Employees,Text> {@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {Employees employees = new Employees();String line = value.toString();String [] split = line.split("\t");if (split.length==4){employees.setName(split[0]);employees.setAge((int) Long.parseLong(split[1]));employees.setDepartment(split[2]);employees.setSkill(split[3]);}else {employees.setEmployees(split[0], (int) Long.parseLong(split[1]),split[2]);}context.write(employees,new Text());}
}

Reduce

import mapreduce.entity.Employees;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;import java.io.IOException;public class Reduce_sort_group extends Reducer<Employees, Text, Employees,Text> {@Overrideprotected void reduce(Employees key, Iterable<Text> values, Context context) throws IOException, InterruptedException {context.write(key,new Text());}
}

启动类


import mapreduce.entity.Employees;
import mapreduce.tools.UtilsMapReduce;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import java.io.IOException;public class Driver_sort_group {public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {Job job = UtilsMapReduce.getJob("Driver_group");job.setJarByClass(Driver_sort_group.class);//关联mapper和reducejob.setMapperClass(Mapper_sort_group.class);job.setReducerClass(Reduce_sort_group.class);//设置map输出额Kv类型job.setMapOutputKeyClass(Employees.class);job.setMapOutputValueClass(Text.class);//设置最终输出的KV类型job.setOutputKeyClass(Employees.class);job.setOutputValueClass(Text.class);//设置输入路径和输出路径FileInputFormat.setInputPaths(job,new Path("input2\\employees"));FileOutputFormat.setOutputPath(job,new Path("output\\employees_sort_group"));//7.提交jobboolean result =job.waitForCompletion(true);System.exit(result?0:1);}
}

结果

关胜   32  水浒部 大刀
武松  33  水浒部 醉拳
林黛玉 16  红楼部 嘻嘻
贾宝玉 21  红楼部 呵呵
王熙凤 46  红楼部
猪八戒 21  西游部 吃吃吃
孙悟空 23  西游部 筋斗云
沙僧  25  西游部 潜水  

MapReduce统计部门员工组别,并排序相关推荐

  1. Java简单项目实例---统计部门员工的平均工资

    java简单项目实例 题目 要求 代码实现 Company Department Employee Test 题目 公司有开发部,测试部,运维部 每个部门有若干员工 员工有姓名,基本工资和奖金 要求 ...

  2. MapReduce序列化之统计各部门员工薪资总和

    MapReduce序列化之统计各部门员工薪资总和 文章目录 MapReduce序列化之统计各部门员工薪资总和 1.1 实验目的 1.2 实验环境 1.3 需求描述 1.4 实验步骤 1.4.1 采用I ...

  3. SQL 01 按部门统计内部员工薪资排名--partition by--order by--dense_rank()

    SQL系列文章目录 文章目录 SQL系列文章目录 前言 一.背景 二.创建"背景"的代码 三.解题 总结 前言 SQL 01 按部门统计内部员工薪资排名–partition by– ...

  4. MapReduce基础开发之一词汇统计和排序(wordcount)

    统计/var/log/boot.log中含k的字符的数量,并对含k的字符按照数量排序.需分两个job完成,一个用来统计,一个用来排序. 一.统计 1.上传文件到hadoop:    1)新建文件夹:h ...

  5. jp摩根的人都在学python么_摩根大通已要求所有资管部门员工必须学习编程

    当代最具竞争力的技能是什么?摩根大通CEO告诉你---编程.今年新加入摩根大通的全部资产管理分析师必须强制学习编程语言,Python. 摩根大通资管经理Mary Callahan Erodes表示&q ...

  6. 【剑指 offer】—— 为公司员工的年龄排序

    快速排序虽然总体的平均效率是最好的,但也不是在任何时候都是最优的算法.比如数组本身已经是排好序了,而每一轮排序的时候都是以最后一个数字作为比较的标准,此时快速排序的效率只有 O(n2)O(n^2).因 ...

  7. Oracle中和计算总工资,Oracle求部门员工工资占总工资的比率

    --根据每个部门来统计部门工资总和 select deptid, sum(sal) 工资合计 from emp group by deptid; --根据每个部门来统计部门工资总和 select de ...

  8. 使用MapReduce统计一篇微博数据的点赞次数,并且输出前五个最高的点赞数量。

    一个MapReduce写了一个下午,调试运行了不下20次了,我靠,真是闹心,差点整崩溃,在最绝望的时候给出了最好的答案. 需求: 使用MapReduce统计一篇微博数据的点赞次数,并且输出前五个最高的 ...

  9. MapReduce: 统计微博点赞数的前5名。

    MapReduce: 统计微博点赞数的前5名. 要求:得到点赞数最多的前5名博主ID.微博内容.点赞数. 文件: log_movie.txt id, created_at, attitudes_cou ...

最新文章

  1. iOS网络编程-iCloud键值数据存储编程实例
  2. 【经验】广西集体户口迁回农村原籍超级攻略
  3. 使用Tesseract (OCR)实现简单的验证码识别(C#)+窗体淡入淡出效果
  4. 软件设计师12-数据库(数据操作)
  5. Oracle网格控制器OMA端安装Yast
  6. 清华大学操作系统OS学习(八)——虚拟存储概念
  7. uKey双向认证https
  8. 全国办公软件高级操作员证书是计算机水平,《办公软件应用高级操作员级课程标准》.doc...
  9. dell 服务器启用虚拟化,打开DELL R410服务器BIOS虚拟化步骤(图文教程)
  10. 外贸企业邮箱注册申请,阿里qq腾讯邮箱对比选择
  11. 样条函数--spline
  12. 树莓派入门(五)—— 树莓派4B之初体验
  13. Java中模拟评分系统_评分系统.java
  14. 《数论概论》读书笔记 第三章勾股数组与单位圆
  15. phaser.sprite.body overlap collide seperate
  16. MATLAB实现k-means算法(k-均值)对无标签数据进行聚类,并通过肘部法则确定聚类类别
  17. MPLS LDP原理
  18. chrome浏览器被360流氓捆绑,如何解决?
  19. STM32 PWM周期与频率的计算
  20. 速营社团队分享互联网发展过程那些疯狂的时代

热门文章

  1. 基于JAVA学生健康管理系统计算机毕业设计源码+系统+数据库+lw文档+部署
  2. 稳扎稳打,贴近生活!提高雅思听力成绩四步走
  3. 一打卡作弊软件被指破坏钉钉系统:CEO 被判 5 年 6 个月
  4. 人因工程典型应用-隧道灯光循序渐近
  5. 关于商品规格(SKU)的设置
  6. 阅读-《诗经·秦风·无衣》
  7. 【视频】视频存储技术
  8. C语言错误:expected declaration or statement at end of input 归纳总结
  9. WebApp学院助手研发总结
  10. 记录一次腾讯实习投递经历(一)