MapReduce(eclipse)求2020年部门工资平均值,求2021年员工平均工资

本文主要是介绍MapReduce(eclipse)求2020年部门工资平均值,求2021年员工平均工资,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

注意点:

1.部门工资表需要为.csv格式,如下:

 我们可以通过wps新建xls,xlsx的Excel表格,做好的表格另存为csv格式

 

还需注意另存为csv格式时你的Excel只能有一个工作表,如下:

我的.csv表格如下:

我只是完成作业所以年份下的月份只写了一月和二月的大家可以按自己需求增加!

部门号即为上图中的A那一行,写入Mapper端即为words[0].

 

2.以下是我的代码

(1)Mapper端代码

package MapReduce;import java.io.IOException;import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
//                                            k1         v1      k2(年份)          v2工资
public class WordCountMapper extends Mapper<LongWritable,Text,IntWritable,  IntWritable >{protected void map(LongWritable key1, Text value1, Context context) throws IOException, InterruptedException {String line = value1.toString();// 数据:部门 员工姓名  年份 月份 工资String[] words = line.split(",");//,分割//输出k2, v2//2021年【12】工资【14】+【16】//2020年 部门号【0】 工资【4】+【6】context.write(new IntWritable(Integer.parseInt(words[12])), new IntWritable(Integer.parseInt(words[14])+Integer.parseInt(words[16])));}}

(2):Reducer端代码

package MapReduce;import java.io.IOException;import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.mapreduce.Reducer;//                                              k3        v3           k4          v4
public class WordCountReducer extends Reducer<IntWritable,IntWritable,IntWritable,IntWritable> {protected void reduce(IntWritable k3, Iterable<IntWritable>v3,Context context)throws IOException, InterruptedException {//对工资求和int total = 0;//求平均int deptNumber = 0;for(IntWritable v:v3) {total +=v.get();deptNumber++;}//输出:年份 工资总数平均值context.write(k3, new IntWritable(total/deptNumber));//按月统计部门的平均工资//context.write(k3, new IntWritable(total/12));}}

(3):Drive端代码

package MapReduce;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;public class WordCountDrive {public static void main(String[] args) throws Exception {//创建一个job和任务入口(指定主类)Job job = Job.getInstance(new Configuration());//指定job的mapper和输出的类型<k2 v2>job.setMapperClass(WordCountMapper.class);job.setMapOutputKeyClass(IntWritable.class);job.setMapOutputValueClass(IntWritable.class);//指定job的reducer和输出的类型<k4  v4>job.setReducerClass(WordCountReducer.class);job.setOutputKeyClass(IntWritable.class);job.setOutputValueClass(IntWritable.class);//指定job的输入和输出路径FileInputFormat.setInputPaths(job, new Path("D:\\年份月份工资表.csv"));FileOutputFormat.setOutputPath(job, new Path("D:\\a4"));//执行jobboolean result = job.waitForCompletion(true);if (result) {System.out.println("完成!");}else {System.out.println("失败!");}}
}

求2021年的平均工资(我只求了2021年一月和二月的)的平均工资运行结果如下:

 

 

这篇关于MapReduce(eclipse)求2020年部门工资平均值,求2021年员工平均工资的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/379711

相关文章

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

eclipse安装subversion(SVN)版本控制插件

陈科肇 查看插件更新站点 网址:http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA 网站截图: 根据自己的eclipse版本,选择需要的更新站点. 使用eclipse集成subservion插件 Help > Install New Software…> 等待下载安装插件…

GPU 计算 CMPS224 2021 学习笔记 02

并行类型 (1)任务并行 (2)数据并行 CPU & GPU CPU和GPU拥有相互独立的内存空间,需要在两者之间相互传输数据。 (1)分配GPU内存 (2)将CPU上的数据复制到GPU上 (3)在GPU上对数据进行计算操作 (4)将计算结果从GPU复制到CPU上 (5)释放GPU内存 CUDA内存管理API (1)分配内存 cudaErro

2021-8-14 react笔记-2 创建组件 基本用法

1、目录解析 public中的index.html为入口文件 src目录中文件很乱,先整理文件夹。 新建components 放组件 新建assets放资源   ->/images      ->/css 把乱的文件放进去  修改App.js 根组件和index.js入口文件中的引入路径 2、新建组件 在components文件夹中新建[Name].js文件 //组件名首字母大写

2021-08-14 react笔记-1 安装、环境搭建、创建项目

1、环境 1、安装nodejs 2.安装react脚手架工具 //  cnpm install -g create-react-app 全局安装 2、创建项目 create-react-app [项目名称] 3、运行项目 npm strat  //cd到项目文件夹    进入这个页面  代表运行成功  4、打包 npm run build

我自己常用的eclipse 快捷键整理

---------------- 我自己改的快捷键: 复制当前行单下一行  ctrl alt n   --------------------- 自带快捷键: 快速定位到一行  CTRL+L 向上(下)移动选中的行:ALT+UP/DOWN ARROW 删除行(Delete Line):CTRL+D CTRL + 1也很有用     ----------

eclipse中相同变量显示变色设置

java文件的设置"Window"-"preferences"-"Java"-"Editor"-"Mark Occurrences"复选框勾选 js文件的设  置"Window"-"preferences"-"web"-"javascript"-"Mark Occurrences"复选框勾选 。

eclipse中,更新JDK之后,启动Tomcat报错:

更新到这个版本之后,启动Tomcat报错: 四月 25, 2016 10:13:20 上午 org.apache.catalina.core.AprLifecycleListener lifecycleEvent INFO: The APR based Apache Tomcat Native library which allows optimal performance in prod

Eclipse或MyEclipse中Java Working Set管理项目

随着学习JAVA的时间的越来越久,项目也越来越多,Eclipse或MyEclipse界面中显示一堆! 每次工作使用到的项目肯定不会太多...... 每次从这么大数量的工程当中找到自己要使用的, 必须大规模的滚动滚动条...... 图片一   Project Explorer中:    图片二:Package Explorer中: 这样就好找很多了,分类放!

在Eclipse环境下修改Tomcat编码的问题

问题: 由于BMS需要设置UTF-8编码,要不就会出现中文乱码问题; 一、项目保持UTF-8格式; 二、由于可能会多次移除项目、加载项目,不想每次都要修改tmp0\conf 原因: 如果在eclipse中配置了tomcat后,其实,tomcat所用的所有tomcat配置文件,都不是catalina_home/config下面的xml文件,而是在eclipse所创建的Serve