MapReduce编写程序统计各部门员工薪水和
环境: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编写程序统计各部门员工薪水和相关推荐
- MapReduce序列化之统计各部门员工薪资总和
MapReduce序列化之统计各部门员工薪资总和 文章目录 MapReduce序列化之统计各部门员工薪资总和 1.1 实验目的 1.2 实验环境 1.3 需求描述 1.4 实验步骤 1.4.1 采用I ...
- 统计各个部门员工薪水总和 Hadoop
一.先进行最基础的代码编写 Mapper类: package com.partition;import java.io.IOException;import org.apache.hadoop.io. ...
- 假设有一个字类型的数值arry1,试编写程序统计arry1数值及其后若干数值,在字单元中存储时每个数据中含“1”数据位的个数,并将统计结果保存在res1数组中。数据段的代码定义如下: data seg
假设有一个字类型的数值arry1,试编写程序统计arry1数值及其后若干数值,在字单元中存储时每个数据中含"1"数据位的个数,并将统计结果保存在res1数组中.数据段的代码定义如下 ...
- 编写程序统计从键盘输入的一行文本中各个字母的个数。 输入以回车键结束。 不区分大小写,大写字母与相应的小写字母按照同一个字母看待。 要求输出按照各个字母出现的个数从大到小进行排序,出现的个数相同的,按
编写程序统计从键盘输入的一行文本中各个字母的个数. 输入以回车键结束. 不区分大小写,大写字母与相应的小写字母按照同一个字母看待. 要求输出按照各个字母出现的个数从大到小进行排序,出现的个数相同的,按 ...
- 统计各部门的薪水总和_你必须知道的SAP中统计指标设置和应用
第一节统计指标 统计指标是指反映总体现象数量特征的概念.它包括三个构成要素:指标名称,计量单位,计算方法,统计指标通常用来做分配分摊系数依据. 图1-[1]:手工计划创建统计指标计划格式的配置. 图1 ...
- 统计各部门的薪水总和_近年来,统计学热过金融火过计算机,这是真的吗?
初识统计学是2005年,当时统计学专业还是个小冷门,在金融学,会计学,财政学等大热专业的身后默默做背景板. 统计学有多难考? 不过十几年,统计学已经火到了风口浪尖.2019年,各校统计学考研分数线大涨 ...
- c语言编写程序统计某给定ascii文件中个字母的出现频率,2016年浙江理工大学理学院C语言程序设计考研复试题库...
一.选择题 1. 对于一个正常运行的C 程序,以下叙述中正确的是( ). A. 程序的执行总是从程序的第一个函数开始,在main 函数结束 B. 程序的执行总是从main 函数开始 C. 程序的执行总 ...
- C语言-编写程序统计输入的字符中空格符、换行符和横线跳格(制表)符的个数,用!号结束输入。
#include<stdio.h> #include<ctype.h> main() {long n=0;char ch;while((ch=getchar())!='!')/ ...
- Java 部门员工管理
项目作业:部门员工管理 题目要求: 某公司要开发内部的 "办公信息化管理系统",请使用面向对象的思想描述以下员工信息. 程序运行参考效果图如下: 任务描述 一.程序整体要求 划分功 ...
最新文章
- 科普丨让机器看见世界,这背后的技术是什么?
- 【 Vivado 】打包属于自己的IP
- 特稿 | OceanBase 连破纪录:蚂蚁技术人的砥砺前行
- Zune 3.0与XNA GS 3.0 Beta
- 深入理解Java中的逃逸分析
- 天下为公:TCP堵塞控制
- 【Unity新闻】Unity新工具Metric Validation帮你自动化测试游戏平衡性
- 德鲁伊 oltp oltp_深入研究内存中OLTP表的非聚集索引
- 【转载】线段树 区间合并 小结
- 阿里云高级技术专家彦林:云原生架构下的微服务演进
- 如何在云上高效地实践“自动化”和“弹性”
- 深入理解地球的经度和纬度换算
- Photoshop通过抠图法给照片换背景-PS换背景教程
- java小练习:乘法表的实现(不止是9)
- 美团点评亮相台北国际创意节,诠释Food+全景生活营销新体验
- 密码学实验4 欧拉数求解和DES的初始置换
- BZOJ 3653: 谈笑风生
- Tester的基本术,你精通几个?
- 菜鸟教程中HTTP教程Word版
- java 1.8(jdk1.8安装教程)
热门文章
- python dataframe unionall
- c语言父亲节快乐,老爸 父亲节快乐
- Adrien and Austin
- 噪声的频谱分析的重要意义_频谱分析的作用
- SpringBoot2.1 - Quartz自动化配置集成 yml方式配置免配置类和properties
- 剑指offer----C语言版----第九天
- Redis集群只读问题
- android gdx 放进布局,将LibGDX添加到现有的Android Studio项目中
- 几部中国经典武侠电影
- Django 2.0 项目实战 (2): 查看与编辑用户个人资料,扩展Django自带后台User Admin