分析每个部门总额的数据处理流程并开发程序
手动反爬虫,禁止转载: 原博地址 https://blog.csdn.net/lys_828/article/details/118964468(CSDN博主:Be_melting)
知识梳理不易,请尊重劳动成果,文章仅发布在CSDN网站上,在其他网站看到该博文均属于未经作者授权的恶意爬取信息
1 分析每个部门工资总额的数据处理流程
数据预览,提供包含了一个员工表emp.csv,一个部门表dept.csv
员工表各列的含义为:员工编号、员工姓名、员工职位、员工老板编号、员工的入职日期、员工的月薪、员工奖金和员工所在部门号
部门表各列的含义为:部门号、部门名称和部门所在城市
# dept.csv
10,ACCOUNTING,NEW YORK
20,RESEARCH,DALLAS
30,SALES,CHICAGO
40,OPERATIONS,BOSTON
# emp.csv
7369,SMITH,CLERK,7902,1980/12/17,800,0,20
7499,ALLEN,SALESMAN,7698,1981/2/20,1600,300,30
7521,WARD,SALESMAN,7698,1981/2/22,1250,500,30
7566,JONES,MANAGER,7839,1981/4/2,2975,0,20
7654,MARTIN,SALESMAN,7698,1981/9/28,1250,1400,30
7698,BLAKE,MANAGER,7839,1981/5/1,2850,0,30
7782,CLARK,MANAGER,7839,1981/6/9,2450,0,10
7788,SCOTT,ANALYST,7566,1987/4/19,3000,0,20
7839,KING,PRESIDENT,-1,1981/11/17,5000,0,10
7844,TURNER,SALESMAN,7698,1981/9/8,1500,0,30
7876,ADAMS,CLERK,7788,1987/5/23,1100,0,20
7900,JAMES,CLERK,7698,1981/12/3,950,0,30
7902,FORD,ANALYST,7566,1981/12/3,3000,0,20
7934,MILLER,CLERK,7782,1982/1/23,1300,0,10
如果进行SQL语句进行每个部门工资总额进行求解,那么对应的代码为:select deptno,sum(sal) from emp group by deptno;
如果使用hadoop进行求解,具体的MapReduce的计算流程分析如下
还是和之前进行分析WordCount的程序一样。第一步就是数据输入,要有数据。因此就需要进行数据的上传,上传之前进行文件夹的创建,最终数据是来自hdfs中的scott文件夹下面的csv等文件
然后就是分析一下中间的处理过程了,具体流程可以结合这上面的图形进行理解,前面博客对于这个过程已经很详细梳理过,这里就不再赘述了,不同的就是中间k2、k3、k4的数据类型
2 每个部门工资总额程序开发
2.1 创建框架
和之前的程序开发类似,首先创建一个package,命名为saletotal,然后搭建程序框架:一个Mapper,一个Reducer和一个主程序(在创建Mapper和Reducer时候顺带着继承对应的父类,由于还没有对里面的参数和方法进行重写,所以这两个文件显示报错)
2.2 开发Mapper程序
在继承和重写mapper方法的基础上,只需要修改部分代码,首先数据类型修改,其次是参数为了便于理解可以修改为key1和value1,接着就是对数据进行处理,先转化为字符串然后再进行切割,获取对应的数值,最后就是输出key2和value2,全部的代码如下,至此整个Mapper程序开发完毕
2.3 开发Reduce程序
Reducer程序的设计基本上和前面的Mapper程序设计一致,首先指定数据类型,然后参数为了方便记忆操作改成k3和v3,最后就是对v3进行求和,最后输出k4和v4,具体的代码如下,至此整个Reducer程序就设计完成
2.4 执行主程序
最后一个就是主程序的设计,上一个博客最后总结的幽默版,可以直接拿过来用,只需要修改一下三个框中的内容即可,第一个框中把主程序的类名称换成当前的类名称,后两个框都是修改数据类型,核实无误后进行程序打包
还是按照前面一个博客的操作,最后在桌面的jar文件夹中生成一个p2.jar的文件
然后将jar上传到hadoop上进行数据测试,程序可以正常执行
最后一步就是验证最终生成的文件中的结果,输出的结果符合预期
至此分析每个部门工资总额的数据处理流程并开发程序的梳理就完成了,完结撒花✿✿ヽ(°▽°)ノ✿
![](/qrcode.jpg)