举例2:使用MapReduce序列化重写“求部门工资的总额的例子

数据处理过程如图:

代码实现:

EmpMapper.java
package com.serializable.salarytotal;import com.serializable.hadoop.Emp;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;import java.io.IOException;
//                                                        k2:部门号  v2:员工对象
public class EmpMapper extends Mapper<LongWritable, Text, IntWritable, Emp> {@Overrideprotected void map(LongWritable key1, Text value1, Context context) throws IOException, InterruptedException {// 数据:7654,MARTIN,SALESMAN,7698,1981/9/28,1250,1400,30String data = value1.toString();//分词String[] words = data.split(",");//生成员工对象Emp emp = new Emp();emp.setEmpno(Integer.parseInt(words[0]));emp.setEname(words[1]);emp.setJob(words[2]);emp.setMgr(Integer.parseInt(words[3]));emp.setHiredate(words[4]);emp.setSal(Integer.parseInt(words[5]));emp.setComm(Integer.parseInt(words[6]));emp.setDeptno(Integer.parseInt(words[7]));//输出员工对象  k2:部门号                                                                     v2:员工对象context.write(new IntWritable(emp.getDeptno()),emp);}
}
EmpReducer.java
package com.serializable.salarytotal;import com.serializable.hadoop.Emp;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.mapreduce.Reducer;import java.io.IOException;public class EmpReducer extends Reducer<IntWritable, Emp,IntWritable,IntWritable> {@Overrideprotected void reduce(IntWritable key3, Iterable<Emp> values3, Context context) throws IOException, InterruptedException {int salaryTotal = 0;//取出员工薪水,并求和for (Emp emp:values3) {salaryTotal += emp.getSal();}context.write(key3,new IntWritable(salaryTotal));}
}
EmpMain.java
package com.serializable.salarytotal;import com.serializable.hadoop.Emp;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;public class EmpMain {public static void main(String[] args) throws Exception {// 1.创建任务,指定任务入口Job job = Job.getInstance();job.setJarByClass(EmpMain.class);// 2.指定map和map的数据输出类型job.setMapperClass(EmpMapper.class);job.setMapOutputKeyClass(IntWritable.class);job.setMapOutputValueClass(Emp.class);// 注意:输出的是员工对象// 3.指定reducer和reducer的数据输出类型job.setReducerClass(EmpReducer.class);job.setOutputKeyClass(IntWritable.class);job.setOutputValueClass(IntWritable.class);// 4.指定任务的输入路径、输出路径FileInputFormat.setInputPaths(job,new Path(args[0]));FileOutputFormat.setOutputPath(job,new Path(args[1]));// 5.启动任务job.waitForCompletion(true);}
}

运行结果:

MapReducer——使用序列化求部门工资总额(4)相关推荐

  1. MapReducer——MapReduce编程案例:求部门的工资总额(2)

    MapReduce编程案例:求部门的工资总额 1.员工表  SQL:select deptno,sum(sal) from emp group by deptno; 2.分析数据处理的过程 3.开发程 ...

  2. 【MapReduce】Hadoop的序列化机制以及序列化案例求解每个部门工资总额

    Hadoop的序列化机制以及序列化案例求解每个部门工资总额 1 Hadoop的序列化 1.1 序列化定义 1.2 Java序列化编程 1.3 hadoop序列化编程 2 序列化求解每个部门工资总额 手 ...

  3. Spark2.4.8 求员工工资总额

    Spark2.4.8 求员工工资总额 一.测试数据 二.任务要求 三.编码实现 四.实验要求 一.测试数据 员工信息表:下载地址 表字段说明: 二.任务要求 任务1:求每个部门的员工工资总额 任务2: ...

  4. Kettle5.4统计各部门工资总额

    Kettle5.4统计各部门工资总额 实验环境及配置 一.任务说明 二.设计转换和作业 三.配置转换和作业 四.运行转换和作业 五.查看结果 实验环境及配置 版本:hadoop-2.7.3 模式:伪分 ...

  5. 【MapReduce】分析每个部门工资总额的数据处理流程并开发程序

    分析每个部门总额的数据处理流程并开发程序 1 分析每个部门工资总额的数据处理流程 2 每个部门工资总额程序开发 2.1 创建框架 2.2 开发Mapper程序 2.3 开发Reduce程序 2.4 执 ...

  6. 试用SQL语句创建一个工资总额超过20万元(含20万元)的各部门工资总额视图V-SAL...

    2010年5月21日星期五 设有关系模式:EMP(职工号,姓名,工资,部门号) 试用SQL语句创建一个工资总额超过20万元(含20万元)的各部门工资总额视图V-SAL. select 部门号,sum( ...

  7. 使用MapReduce序列化求每个部门的工资总额

    跟之前的直接获取每个部门员工的工资有所不同的是,这个是获取一个对象,并非一个值了,用到了序列化的知识点. 案例代码如下: Employee :(序列化,反序列化) package Mapreducer ...

  8. 求部门最高工资(Mysql多表查询)

    分享一下group by在以下的多表查询中不可用,先给出错误的SQL语句,后面再给出正确语句和分析. 员工表employee,包括Id,Name,Salary,和DepartmentID,Depart ...

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

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

最新文章

  1. TypeScript 泛型
  2. OLAP是什么意思?
  3. 无法访问此网站刷新又好了_一键突破或加速网站访问
  4. iOS 文件和数据管理 (可能会删除本地文件储存)
  5. [03] 为什么要使用异常机制
  6. 截取年月日在hana中怎么写_获取Sting类型格式-日期中的年月日
  7. 一分钟教你学会配置eslint,还在为风格单双引号,对象末位逗号要不要,引用各种报错而烦恼?(建议收藏!详细中文注释)...
  8. 阿里云移动端播放器高级功能---直播时移 1
  9. 区块链的可视化:hash,block,blockchain,distributed,tokens,coinbase
  10. 解决 spring cloud git config 配置中心多环境问题
  11. 【Prescan学习】Prescan环境配置(介绍+安装+学习资源)
  12. AAC MP3音频帧采样点大小
  13. 樊登读书会掌控读后感_樊登读书刻意练习读后感
  14. C语言——二项式定理
  15. 客户关系管理(CRM)系统源码设计方案
  16. 安全防护与信息加密:一个新的挑战
  17. 我们真的需要会议耳机吗?
  18. 位运算符:按位取反(~)、位与()、位或(|)、位异或(^);左移运算符(<<)、右移运算符(>>)
  19. PTA 6 家庭土地管理 分数 10
  20. 超好用的编程字体推荐!!!以及vsCode的配置使用

热门文章

  1. 解决jQuery打开或跳转页面隐藏元素闪动问题
  2. 小车手app安卓版下载_汽车助手安卓版app下载_汽车助手安卓版v1.0.0 手机版v1.0.0 手机版 - Win7旗舰版...
  3. l bfgs算法java代码_L-BFGS算法介绍
  4. 基于微信小程序食堂订餐系统源码(微信小程序毕业设计)
  5. mac安装旺旺启动台找不到_Mac恢复/重装系统教程
  6. kerberos学习
  7. 光环国际PMP:一条关于项目经理的深刻思考
  8. 关于switchhosts
  9. 消息对话框:alert、confirm、prompt
  10. 详解虚拟产品落地实操