【手把手 脑把脑】教会你使用idea基于MapReduce的统计数据分析(从问题分析到代码编写)(一)

简介: 【手把手 脑把脑】教会你使用idea基于MapReduce的统计数据分析(从问题分析到代码编写)(一)

1 编程前总分析

1.1 数据源

英语,李沐,85,男,20
数学,李沐,54,男,20
音乐,李沐,54,男,20
体育,李沐,34,男,20
语文,李媛,81,女,20
音乐,李媛,85,女,20
体育,李媛,89,女,20
语文,马珂,75,女,19
英语,马珂,85,女,19
音乐,马珂,75,女,19
体育,马珂,65,女,19
语文,潘琴,42,女,20
英语,潘琴,48,女,20
音乐,潘琴,48,女,20
体育,潘琴,78,女,20
英语,秦灿,75,男,19
数学,秦灿,89,男,19
音乐,秦灿,85,男,19
体育,秦灿,99,男,19
语文,王靓,85,女,21
英语,王靓,85,女,21
数学,王靓,48,女,21
音乐,王靓,86,女,21
音乐,王靓,85,女,21
体育,王靓,96,女,21
体育,王靓,87,女,21
英语,吴起,85,男,20
数学,吴起,85,男,20
英语,张翔,96,男,20
数学,张翔,85,男,20
音乐,张翔,85,男,20
体育,张翔,87,男,20
语文,郑虎,85,男,20
数学,郑虎,85,男,20
音乐,郑虎,88,男,20
体育,郑虎,68,男,20
语文,周伟,76,男,19
英语,周伟,85,男,19
数学,周伟,76,男,19
音乐,周伟,99,男,19
体育,周伟,90,男,19
数学,朱鸿,90,男,21
音乐,朱鸿,80,男,21
体育,朱鸿,81,男,21

1.2 需要掌握的知识

1.2.1 Hadoop对比java的数据类型

java Hadoop

boolean BooleanWritable

Integer/int IntWritable

Long/long LongWritable

Float/float FloatWritable

Double/double DoubleWritable

String Text

NullWritable

1.2.2 MapReduce流程简介

   MapReduce是一种简化的并行计算编程模型框架,主要解决了分布式计算的相关问题。所谓的分布式计算就是将一个文件里的数据内容,一行行的发送给mapper,mapper接收到一行数据使用split分割后接收,并按key分组后传给reducer,reducer将接收到的一组数据进行处理后输出,当所有的组都处理完成结束一个MapReduce。

image.png



1.3.3 MapReduce流程细分

   功能:统计每门课程中相同分数的人有多少及他们的名字


   思考一下,想要统计每门课程中相同分数的人数及名字,我们需要以什么字段为标准对数据进行分组(mapper最主要的功能就是分组)?想要搞明白上面的问题,试着和mysql的分组查询操作做一下类比,具体sql语句如下:


SELECT 姓名 FROM 表 GROUP BY 课程名称,成绩 ;


   参考sql语句的分组查询,mapper功能就相当于按课程和成绩两个字段值对数据进行分组并查询学生姓名。mapper里的最后一句context.write(key,value);里的两个参数,key等于GROUP BY后面的字段名-->课程成绩和成绩的拼接字符串,value等于GROUP BY前面的字段名-->姓名。mapper就实现了将所有key值相同的分为一组,value放在迭代器中,一组组传给reducer,reducer使用一个Text类型的key和迭代器value进行接收。


image.png


2 编码阶段

       mapreduce拆分:每个mapreduce程序都可以拆分成三个小部分mapper类、reducer类、main方法类。每个类都有其固定的框架,需要改变的就只有mapper和reducer类中重写方法的方法体本身,还有main方法里面的各项参数值。


       如果说,当然我的读者肯定都是聪明的亚批,我是说如果你朋友的java编程基础不是很好,我的注释表示它完全可以很细。        


相关文章
|
10月前
|
自然语言处理 数据挖掘 数据处理
告别低效代码:用对这10个Pandas方法让数据分析效率翻倍
本文将介绍 10 个在数据处理中至关重要的 Pandas 技术模式。这些模式能够显著减少调试时间,提升代码的可维护性,并构建更加清晰的数据处理流水线。
340 3
告别低效代码:用对这10个Pandas方法让数据分析效率翻倍
|
SQL 人工智能 算法
TDengine 发布时序数据分析 AI 智能体 TDgpt,核心代码开源
2025 年 3 月 26 日,涛思数据通过线上直播形式正式发布了其新一代时序数据分析 AI 智能体——TDgpt,并同步开源其核心代码(GitHub 地址:https://github.com/taosdata/TDengine)。这一创新功能作为 TDengine 3.3.6.0 的重要组成部分,标志着时序数据库在原生集成 AI 能力方面迈出了关键一步。
860 0
|
11月前
|
数据采集 人工智能 算法
“脏数据不清,分析徒劳”——聊聊数据分析里最容易被忽视的苦差事
“脏数据不清,分析徒劳”——聊聊数据分析里最容易被忽视的苦差事
389 34
|
9月前
|
机器学习/深度学习 算法 数据挖掘
【数据分析】基于matlab私家车充电模型(含私家车日行驶距离概率密度及累加函数,电动汽车出发时间(或者称开始充电的时间)概率)(Matlab代码实现)
【数据分析】基于matlab私家车充电模型(含私家车日行驶距离概率密度及累加函数,电动汽车出发时间(或者称开始充电的时间)概率)(Matlab代码实现)
223 0
|
10月前
|
数据采集 SQL 监控
“你分析个锤子啊,米都没洗净”——数据采集和数据分析的底层逻辑真相
“你分析个锤子啊,米都没洗净”——数据采集和数据分析的底层逻辑真相
228 0
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
517 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
搜索推荐 Java 数据库连接
Java|在 IDEA 里自动生成 MyBatis 模板代码
基于 MyBatis 开发的项目,新增数据库表以后,总是需要编写对应的 Entity、Mapper 和 Service 等等 Class 的代码,这些都是重复的工作,我们可以想一些办法来自动生成这些代码。
574 6
|
Java Linux 开发工具
IDEA中git提交前如何关闭code analysis以及开启格式化代码
【10月更文挑战第12天】本文介绍了在 IntelliJ IDEA 中关闭代码分析和开启代码格式化的步骤。关闭代码分析可通过取消默认启用检查或针对特定规则进行调整实现,同时可通过设置 VCS 静默模式在提交时跳过检查。开启代码格式化则需在 `Settings` 中配置 `Code Style` 规则,并通过创建 Git 钩子实现提交前自动格式化。
6579 3
|
Java 应用服务中间件 Maven
【终极解决方案】IDEA maven 项目修改代码不生效。
【终极解决方案】IDEA maven 项目修改代码不生效。
2542 1
|
机器学习/深度学习 数据采集 数据可视化
如何理解数据分析及数据的预处理,分析建模,可视化
如何理解数据分析及数据的预处理,分析建模,可视化
558 0

热门文章

最新文章