MapReducer——使用序列化求部门工资总额(4)
举例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)相关推荐
- MapReducer——MapReduce编程案例:求部门的工资总额(2)
MapReduce编程案例:求部门的工资总额 1.员工表 SQL:select deptno,sum(sal) from emp group by deptno; 2.分析数据处理的过程 3.开发程 ...
- 【MapReduce】Hadoop的序列化机制以及序列化案例求解每个部门工资总额
Hadoop的序列化机制以及序列化案例求解每个部门工资总额 1 Hadoop的序列化 1.1 序列化定义 1.2 Java序列化编程 1.3 hadoop序列化编程 2 序列化求解每个部门工资总额 手 ...
- Spark2.4.8 求员工工资总额
Spark2.4.8 求员工工资总额 一.测试数据 二.任务要求 三.编码实现 四.实验要求 一.测试数据 员工信息表:下载地址 表字段说明: 二.任务要求 任务1:求每个部门的员工工资总额 任务2: ...
- Kettle5.4统计各部门工资总额
Kettle5.4统计各部门工资总额 实验环境及配置 一.任务说明 二.设计转换和作业 三.配置转换和作业 四.运行转换和作业 五.查看结果 实验环境及配置 版本:hadoop-2.7.3 模式:伪分 ...
- 【MapReduce】分析每个部门工资总额的数据处理流程并开发程序
分析每个部门总额的数据处理流程并开发程序 1 分析每个部门工资总额的数据处理流程 2 每个部门工资总额程序开发 2.1 创建框架 2.2 开发Mapper程序 2.3 开发Reduce程序 2.4 执 ...
- 试用SQL语句创建一个工资总额超过20万元(含20万元)的各部门工资总额视图V-SAL...
2010年5月21日星期五 设有关系模式:EMP(职工号,姓名,工资,部门号) 试用SQL语句创建一个工资总额超过20万元(含20万元)的各部门工资总额视图V-SAL. select 部门号,sum( ...
- 使用MapReduce序列化求每个部门的工资总额
跟之前的直接获取每个部门员工的工资有所不同的是,这个是获取一个对象,并非一个值了,用到了序列化的知识点. 案例代码如下: Employee :(序列化,反序列化) package Mapreducer ...
- 求部门最高工资(Mysql多表查询)
分享一下group by在以下的多表查询中不可用,先给出错误的SQL语句,后面再给出正确语句和分析. 员工表employee,包括Id,Name,Salary,和DepartmentID,Depart ...
- Oracle中和计算总工资,Oracle求部门员工工资占总工资的比率
--根据每个部门来统计部门工资总和 select deptid, sum(sal) 工资合计 from emp group by deptid; --根据每个部门来统计部门工资总和 select de ...
最新文章
- TypeScript 泛型
- OLAP是什么意思?
- 无法访问此网站刷新又好了_一键突破或加速网站访问
- iOS 文件和数据管理 (可能会删除本地文件储存)
- [03] 为什么要使用异常机制
- 截取年月日在hana中怎么写_获取Sting类型格式-日期中的年月日
- 一分钟教你学会配置eslint,还在为风格单双引号,对象末位逗号要不要,引用各种报错而烦恼?(建议收藏!详细中文注释)...
- 阿里云移动端播放器高级功能---直播时移 1
- 区块链的可视化:hash,block,blockchain,distributed,tokens,coinbase
- 解决 spring cloud git config 配置中心多环境问题
- 【Prescan学习】Prescan环境配置(介绍+安装+学习资源)
- AAC MP3音频帧采样点大小
- 樊登读书会掌控读后感_樊登读书刻意练习读后感
- C语言——二项式定理
- 客户关系管理(CRM)系统源码设计方案
- 安全防护与信息加密:一个新的挑战
- 我们真的需要会议耳机吗?
- 位运算符:按位取反(~)、位与()、位或(|)、位异或(^);左移运算符(<<)、右移运算符(>>)
- PTA 6 家庭土地管理 分数 10
- 超好用的编程字体推荐!!!以及vsCode的配置使用
热门文章
- 解决jQuery打开或跳转页面隐藏元素闪动问题
- 小车手app安卓版下载_汽车助手安卓版app下载_汽车助手安卓版v1.0.0 手机版v1.0.0 手机版 - Win7旗舰版...
- l bfgs算法java代码_L-BFGS算法介绍
- 基于微信小程序食堂订餐系统源码(微信小程序毕业设计)
- mac安装旺旺启动台找不到_Mac恢复/重装系统教程
- kerberos学习
- 光环国际PMP:一条关于项目经理的深刻思考
- 关于switchhosts
- 消息对话框:alert、confirm、prompt
- 详解虚拟产品落地实操