环境:Maven,IDEA,hadoop-3.0.0

准备工作可参照:https://blog.csdn.net/m0_63716485/article/details/127597324?spm=1001.2014.3001.5502

员工数据:

链接:https://pan.baidu.com/s/1RmmLH15E4SXJuon3oNQsCg?pwd=yyds

Mapper阶段:

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;
public class mapersalary extends Mapper<LongWritable,Text,IntWritable,IntWritable>{IntWritable a=new IntWritable();IntWritable b=new IntWritable();@Overrideprotected void map(LongWritable key, Text value, Mapper<LongWritable, Text, IntWritable, IntWritable>.Context context) throws IOException, InterruptedException {//7369,SMITH,CLERK,7902,1980/12/17,800,,20String data=value.toString();String[] word=data.split(",");a.set(Integer.parseInt(word[7]));b.set(Integer.parseInt(word[5]));context.write(a,b);}
}

Reduce阶段:

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.mapreduce.Reducer;
import java.io.IOException;
public class reducesalary extends Reducer<IntWritable,IntWritable,IntWritable,IntWritable> {@Overrideprotected void reduce(IntWritable key, Iterable<IntWritable> values, Reducer<IntWritable, IntWritable, IntWritable, IntWritable>.Context context) throws IOException, InterruptedException {int totalsalary=0;IntWritable a=new IntWritable();for(IntWritable value:values){totalsalary+=value.get();}a.set(totalsalary);context.write(key, a);}
}

程序主入口:

import org.apache.hadoop.conf.Configuration;
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;
import java.io.IOException;
public class mainz {public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {//创建一个job和任务入口Job job=Job.getInstance(new Configuration());job.setJarByClass(mainz.class);//main方法所在的class//指定job的mapper和输出的类型job.setMapperClass(mapersalary.class);job.setMapOutputKeyClass(IntWritable.class);job.setMapOutputValueClass(IntWritable.class);//指定job的reduce和输出的类型job.setReducerClass(reducesalary.class);job.setOutputKeyClass(IntWritable.class);job.setOutputValueClass(IntWritable.class);//指定job的输入和输出FileInputFormat.setInputPaths(job, new Path(args[0]));FileOutputFormat.setOutputPath(job, new Path(args[1]));//引用Combiner//job.setCombinerClass(wordcountreducer.class);//执行任务job.waitForCompletion(true);}
}

导出jar包:

mvn clean package

将jar包上传并运行命令:

hadoop jar salary.jar first.mainz /input/salary.txt /output/wc2

运行成功,结果展示:

MapReduce编写程序统计各部门员工薪水和相关推荐

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

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

  2. 统计各个部门员工薪水总和 Hadoop

    一.先进行最基础的代码编写 Mapper类: package com.partition;import java.io.IOException;import org.apache.hadoop.io. ...

  3. 假设有一个字类型的数值arry1,试编写程序统计arry1数值及其后若干数值,在字单元中存储时每个数据中含“1”数据位的个数,并将统计结果保存在res1数组中。数据段的代码定义如下: data seg

    假设有一个字类型的数值arry1,试编写程序统计arry1数值及其后若干数值,在字单元中存储时每个数据中含"1"数据位的个数,并将统计结果保存在res1数组中.数据段的代码定义如下 ...

  4. 编写程序统计从键盘输入的一行文本中各个字母的个数。 输入以回车键结束。 不区分大小写,大写字母与相应的小写字母按照同一个字母看待。 要求输出按照各个字母出现的个数从大到小进行排序,出现的个数相同的,按

    编写程序统计从键盘输入的一行文本中各个字母的个数. 输入以回车键结束. 不区分大小写,大写字母与相应的小写字母按照同一个字母看待. 要求输出按照各个字母出现的个数从大到小进行排序,出现的个数相同的,按 ...

  5. 统计各部门的薪水总和_你必须知道的SAP中统计指标设置和应用

    第一节统计指标 统计指标是指反映总体现象数量特征的概念.它包括三个构成要素:指标名称,计量单位,计算方法,统计指标通常用来做分配分摊系数依据. 图1-[1]:手工计划创建统计指标计划格式的配置. 图1 ...

  6. 统计各部门的薪水总和_近年来,统计学热过金融火过计算机,这是真的吗?

    初识统计学是2005年,当时统计学专业还是个小冷门,在金融学,会计学,财政学等大热专业的身后默默做背景板. 统计学有多难考? 不过十几年,统计学已经火到了风口浪尖.2019年,各校统计学考研分数线大涨 ...

  7. c语言编写程序统计某给定ascii文件中个字母的出现频率,2016年浙江理工大学理学院C语言程序设计考研复试题库...

    一.选择题 1. 对于一个正常运行的C 程序,以下叙述中正确的是( ). A. 程序的执行总是从程序的第一个函数开始,在main 函数结束 B. 程序的执行总是从main 函数开始 C. 程序的执行总 ...

  8. C语言-编写程序统计输入的字符中空格符、换行符和横线跳格(制表)符的个数,用!号结束输入。

    #include<stdio.h> #include<ctype.h> main() {long n=0;char ch;while((ch=getchar())!='!')/ ...

  9. Java 部门员工管理

    项目作业:部门员工管理 题目要求: 某公司要开发内部的 "办公信息化管理系统",请使用面向对象的思想描述以下员工信息. 程序运行参考效果图如下: 任务描述 一.程序整体要求 划分功 ...

最新文章

  1. 科普丨让机器看见世界,这背后的技术是什么?
  2. 【 Vivado 】打包属于自己的IP
  3. 特稿 | OceanBase 连破纪录:蚂蚁技术人的砥砺前行
  4. Zune 3.0与XNA GS 3.0 Beta
  5. 深入理解Java中的逃逸分析
  6. 天下为公:TCP堵塞控制
  7. 【Unity新闻】Unity新工具Metric Validation帮你自动化测试游戏平衡性
  8. 德鲁伊 oltp oltp_深入研究内存中OLTP表的非聚集索引
  9. 【转载】线段树 区间合并 小结
  10. 阿里云高级技术专家彦林:云原生架构下的微服务演进
  11. 如何在云上高效地实践“自动化”和“弹性”
  12. 深入理解地球的经度和纬度换算
  13. Photoshop通过抠图法给照片换背景-PS换背景教程
  14. java小练习:乘法表的实现(不止是9)
  15. 美团点评亮相台北国际创意节,诠释Food+全景生活营销新体验
  16. 密码学实验4 欧拉数求解和DES的初始置换
  17. BZOJ 3653: 谈笑风生
  18. Tester的基本术,你精通几个?
  19. 菜鸟教程中HTTP教程Word版
  20. java 1.8(jdk1.8安装教程)

热门文章

  1. python dataframe unionall
  2. c语言父亲节快乐,老爸  父亲节快乐
  3. Adrien and Austin
  4. 噪声的频谱分析的重要意义_频谱分析的作用
  5. SpringBoot2.1 - Quartz自动化配置集成 yml方式配置免配置类和properties
  6. 剑指offer----C语言版----第九天
  7. Redis集群只读问题
  8. android gdx 放进布局,将LibGDX添加到现有的Android Studio项目中
  9. 几部中国经典武侠电影
  10. Django 2.0 项目实战 (2): 查看与编辑用户个人资料,扩展Django自带后台User Admin