当前位置: 首页 > news >正文

Mapreduce_csv_averageCSV文件计算平均值

csv文件求某个平均数据

查询每个部门的平均工资,最后输出

数据处理过程
在这里插入图片描述

employee_noheader.csv(没做关于首行的处理,运行时请自行删除)

EmployeeID,EmployeeName,DepartmentID,Salary  
1,ZhangSan,101,5000
2,LiSi,102,6000
3,WangWu,101,5500
4,ZhaoLiu,103,7000
5,SunQi,102,6500
  1. pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.hadoop</groupId><artifactId>Mapreduce_csv_average</artifactId><version>1.0-SNAPSHOT</version><name>Mapreduce_csv_average</name><description>wunaiieq</description><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!--版本控制--><hadoop.version>2.7.3</hadoop.version></properties><dependencies><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>${hadoop.version}</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>${hadoop.version}</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-mapreduce-client-core</artifactId><version>${hadoop.version}</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>${hadoop.version}</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-yarn-api</artifactId><version>${hadoop.version}</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-streaming</artifactId><version>${hadoop.version}</version></dependency></dependencies><!--构建配置--><build><plugins><plugin><!--声明--><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><version>3.3.0</version><!--具体配置--><configuration><archive><manifest><!--jar包的执行入口--><mainClass>com.hadoop.Main</mainClass></manifest></archive><descriptorRefs><!--描述符,此处为预定义的,表示创建一个包含项目所有依赖的可执行 JAR 文件;允许自定义生成jar文件内容--><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration><!--执行配置--><executions><execution><!--执行配置ID,可修改--><id>make-assembly</id><!--执行的生命周期--><phase>package</phase><goals><!--执行的目标,single表示创建一个分发包--><goal>single</goal></goals></execution></executions></plugin></plugins></build></project>
  1. Map_1
package com.hadoop;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 Map_1 extends Mapper<LongWritable, Text,IntWritable,IntWritable> {@Overrideprotected void map(LongWritable k1, Text v1, Context context)throws IOException, InterruptedException {//处理输入数据,类型转换//以     1,ZhangSan,101,5000  为例String data =v1.toString();//分词操作,csv用","进行分割//一般而言,分词操作大多使用String进行获取,后面可以附跟类型转换String[] words =data.split(",");//下文输出context.write(//K2:部门号输出new IntWritable(Integer.parseInt(words[2])),//K3:工资输出new IntWritable(Integer.parseInt(words[3])));}
}
  1. Reduce_1
package com.hadoop;import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.io.IntWritable;
import java.io.IOException;
public class Reduce_1 extends Reducer<IntWritable,IntWritable,IntWritable,IntWritable>{@Overrideprotected void reduce(IntWritable k3, Iterable<IntWritable> v3, Context context)throws IOException, InterruptedException {//对v3进行求和,计算总额int total=0;int i=0;for (IntWritable v:v3){total+= v.get();i++;}int average=total/i;context.write(k3,new IntWritable(average));}
}
  1. Main
package com.hadoop;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.mapreduce.Job;
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;public class Main {public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {Job job =  Job.getInstance(new Configuration());job.setJarByClass(Main.class);//mapjob.setMapperClass(Map_1.class);job.setMapOutputKeyClass(IntWritable.class);//k2job.setMapOutputValueClass(IntWritable.class);//v2//reducejob.setReducerClass(Reduce_1.class);job.setOutputKeyClass(IntWritable.class);job.setOutputValueClass(IntWritable.class);//输入和输出FileInputFormat.setInputPaths(job,new Path(args[0]));FileOutputFormat.setOutputPath(job,new Path(args[1]));//执行job.waitForCompletion(true);}
}
  1. 运行
    请自行上传至hdfs中
hadoop jar Mapreduce_average.jar /input/employee_noheader.csv /output/csv_average
  1. 效果
hdfs dfs -cat /output/csv_average/part-r-00000

在这里插入图片描述

相关文章:

Mapreduce_csv_averageCSV文件计算平均值

csv文件求某个平均数据 查询每个部门的平均工资&#xff0c;最后输出 数据处理过程 employee_noheader.csv&#xff08;没做关于首行的处理&#xff0c;运行时请自行删除&#xff09; EmployeeID,EmployeeName,DepartmentID,Salary 1,ZhangSan,101,5000 2,LiSi,102,6000…...

将UEC++项目转码成UTF-8

方法一 如果文件不多的话&#xff0c;可以手动一个一个进行修改。添加 “高级保存选项” 手动改为UTF-8 方法二 使用editorconfig文件&#xff0c;统一编码问题。通过&#xff1a;“工具” > “选项”>"文本编辑器" > "C/C" > "代码样式…...

深入探索MySQL C API:使用C语言操作MySQL数据库

目录 引言 一. MySQL C API简介 二. MySQL C API核心函数 2.1 初始化和连接 2.2 配置和执行 2.3 处理结果 2.4 清理和关闭 2.5 错误处理 三. MySQL使用过程 四. 实现CRUD操作 4.1 创建数据库并建立表 ​编辑 4.2 添加数据&#xff08;Create&#xff09; ​编辑 …...

武汉流星汇聚:亚马逊助力跨境电商扬帆起航,海外影响力显著提升

在全球化浪潮的推动下&#xff0c;跨境电商已成为连接世界市场的重要桥梁。而在这场跨越国界的商业盛宴中&#xff0c;亚马逊作为全球电商的领军者&#xff0c;以其独特的商业模式、庞大的用户基础&#xff0c;为无数企业提供了前所未有的发展机遇。武汉流星汇聚电子商务有限公…...

C语言:设计模式

C语言和设计模式&#xff08;总结篇&#xff09; 书籍&#xff1a;《大话设计模式》 2、C语言和设计模式&#xff1a;原型模式&#xff08;复制自己&#xff0c;生成另外一个实例对象&#xff09; 17、C语言实现面向对象编程 : 封装、继承、多态 ---- C语言可&#xff1a;封…...

Pandas数据选择的艺术:深入理解loc和iloc

在数据科学领域&#xff0c;Pandas是处理和分析数据的瑞士军刀。掌握Pandas中的数据选择技巧&#xff0c;尤其是loc和iloc的使用&#xff0c;对于提高数据处理效率至关重要。本文将深入探讨loc和iloc的用法&#xff0c;通过丰富的示例&#xff0c;帮助你精确地选取所需的数据&a…...

<数据集>固定视角监控牧场绵羊识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;3615张 标注数量(xml文件个数)&#xff1a;3615 标注数量(txt文件个数)&#xff1a;3615 标注类别数&#xff1a;1 标注类别名称&#xff1a;[Sheep] 序号类别名称图片数框数1Sheep361529632 使用标注工具&#…...

浙大数据结构慕课课后题(06-图2 Saving James Bond - Easy Version)(拯救007)

题目要求&#xff1a; This time let us consider the situation in the movie "Live and Let Die" in which James Bond, the worlds most famous spy, was captured by a group of drug dealers. He was sent to a small piece of land at the center of a lake fi…...

前置(1):npn 和yarn ,pnpm安装依赖都是从那个源安装的啊,有啥优缺点呢

在使用 npm、yarn 或 pnpm 进行依赖管理和安装时&#xff0c;它们通常默认从 npm 的公共仓库&#xff08;https://registry.npmjs.org/&#xff09;获取包。不过&#xff0c;用户可以配置它们以从其他源获取&#xff0c;例如企业内部的私有仓库或镜像站点&#xff08;如淘宝的 …...

视频融合项目中的平台抉择:6大关键要素助力精准选型

随着安防监控系统行业的快速发展&#xff0c;视频融合项目逐渐成为城市治理、企业管理及智能建筑等领域的重要组成部分。视频融合平台作为视频数据整合、管理和分析的核心&#xff0c;其选择直接影响到项目的成功与否。 在当前智慧业务类项目的集成过程中&#xff0c;我们不仅…...

微信小程序项目结构

微信小程序的项目结构相对清晰&#xff0c;主要包括以下几个部分&#xff1a; 一、项目根目录文件 app.js&#xff1a;小程序项目的入口文件&#xff0c;通过调用App()函数来启动整个小程序的生命周期。这个文件包含了小程序的全局数据、生命周期函数等。 app.json&#xff1a;…...

C++unordered_map的用法

unordered_map的简介 unordered_map是一种容器&#xff0c;可以把字符串当做数字&#xff0c;可以使用[]操作符来访问key值对应的值。 格式&#xff1a; unordered_map<要被转换的类型&#xff0c;转换的类型> 变量名{{要被转换的数或字符&#xff0c;转换的数或字符}}/…...

代码随想录算法训练营第三十六天| 188.买卖股票的最佳时机IV、309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费

写代码的第三十六天 买股票&#xff0c;卡卡买股票&#xff0c;就爱买股票。。。 188.买卖股票的最佳时机IV 思路 本题是多次进行买卖&#xff0c;所以根据上题进行修改。 解决问题1&#xff1a;dp数组的含义以及定义&#xff1f;上题定义的事dp[i][0]初始状态,dp[i][1]第一…...

Golang | Leetcode Golang题解之第332题重新安排行程

题目&#xff1a; 题解&#xff1a; func findItinerary(tickets [][]string) []string {var (m map[string][]string{}res []string)for _, ticket : range tickets {src, dst : ticket[0], ticket[1]m[src] append(m[src], dst)}for key : range m {sort.Strings(m[key])…...

Spring Boot - 通过ServletRequestHandledEvent事件实现接口请求的性能监控

文章目录 概述1. ServletRequestHandledEvent事件2. 实现步骤3. 优缺点分析4. 测试与验证小结其他方案1. 自定义拦截器2. 性能监控平台3. 使用Spring Boot Actuator4. APM工具 概述 在Spring框架中&#xff0c;监控接口请求的性能可以通过ServletRequestHandledEvent事件实现。…...

Docker相关配置记录

Docker相关配置记录 换源 {"registry-mirrors": ["https://dockerhub.icu","https://docker.chenby.cn","https://docker.1panel.live","https://docker.awsl9527.cn","https://docker.anyhub.us.kg","htt…...

MySQL中INT(3)与INT(11)

本文由 ChatMoney团队出品 开篇 在MySQL数据库设计的世界里&#xff0c;数据类型的选择是一项基础而又至关重要的任务。其中&#xff0c;INT数据类型因其广泛的应用和灵活性备受青睐。然而&#xff0c;围绕着INT(3)与INT(11)的具体差异&#xff0c;常常存在一些误解。本文旨在…...

Qt 窗口:菜单、工具与状态栏的应用

目录 引言&#xff1a; 1. 菜单栏 1.1 创建菜单栏 1.2 在菜单栏中添加菜单 1.3 创建菜单项 1.4 在菜单项之间添加分割线 1.5 综合示例 2.工具栏 2.1 创建工具栏 2.2 设置停靠位置 2.3 设置浮动属性 2.4 设置移动属性 3. 状态栏 3.1 状态栏的创建 3.2 在状态栏中显…...

学习必备好物有哪些?高三开学季好物推荐合集

新学期即将开启&#xff0c;学习必备好物有哪些&#xff1f;以下是特别为高三学生朋友们精心挑选的一系列好物推荐&#xff0c;旨在帮助大家在更快更好的选择&#xff0c;快来看看都有哪些吧&#xff01; 1、书客护眼大路灯Sun 书客是海内外知名的生物光学技术方案商&#xf…...

java的分类

目录 Java SE Java EE Java ME java主要分为三类&#xff0c;分别是Java SE&#xff0c;Java EE&#xff0c;Java ME。其中SE是EE和ME的基础。 Java SE 全名为Java Standard Edition&#xff0c;是 Java 平台的基础版本&#xff0c;为开发人员提供了构建和运行桌面应用程…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

tauri项目,如何在rust端读取电脑环境变量

如果想在前端通过调用来获取环境变量的值&#xff0c;可以通过标准的依赖&#xff1a; std::env::var(name).ok() 想在前端通过调用来获取&#xff0c;可以写一个command函数&#xff1a; #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...