Hive实战:分科汇总求月考平均分

这篇具有很好参考价值的文章主要介绍了Hive实战:分科汇总求月考平均分。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、实战概述

  • 在这个实战中,我们使用了Hive框架来处理学生的月考成绩数据。首先,我们准备了三个文本文件,分别包含了语文、数学和英语的月考成绩数据。这些数据被上传到HDFS的指定目录。

  • 接着,我们启动了Hive Metastore服务,并通过Hive客户端连接到Hive。在Hive中,我们创建了一个分区表student_score,用于存储学生的成绩数据,其中分区字段为科目(subject)。

  • 然后,我们按照科目将数据加载到分区表中,分别加载了语文、数学和英语的成绩数据。通过这样的分区方式,我们能够更方便地对数据进行查询和分析。

  • 最后,我们使用Hive的SQL语句进行统计,计算每个学生在三个科目上的月考平均分。使用了AVG函数和ROUND函数来得到每个学生的平均分,并保留一位小数。这样,我们得到了每个学生在语文、数学和英语三个科目上的月考平均分的统计结果。

  • 整个实战过程涉及了Hive的表创建、分区管理、数据加载和SQL查询等操作,展示了Hive在大数据处理中的灵活性和便捷性。通过这次实战,我们能够更好地理解和掌握Hive框架在数据分析和查询中的应用。

二、提出任务

  • 语文月考成绩 - chinese.txt
1 张晓云 89
2 张晓云 73
3 张晓云 67
4 张晓云 70
5 张晓云 79
6 张晓云 87
7 张晓云 99
8 张晓云 83
9 张晓云 97
10 张晓云 92
11 张晓云 67
12 张晓云 86
1 王东林 49
2 王东林 83
3 王东林 67
4 王东林 49
5 王东林 93
6 王东林 87
7 王东林 65
8 王东林 92
9 王东林 60
10 王东林 94
11 王东林 81
12 王东林 90
1 李宏宇 77
2 李宏宇 66
3 李宏宇 89
4 李宏宇 87
5 李宏宇 96
6 李宏宇 79
7 李宏宇 87
8 李宏宇 96
9 李宏宇 69
10 李宏宇 87
11 李宏宇 96
12 李宏宇 79
  • 数学月考成绩 - math.txt
1 张晓云 79
2 张晓云 83
3 张晓云 77
4 张晓云 90
5 张晓云 89
6 张晓云 67
7 张晓云 89
8 张晓云 93
9 张晓云 90
10 张晓云 82
11 张晓云 77
12 张晓云 96
1 王东林 78
2 王东林 94
3 王东林 76
4 王东林 70
5 王东林 90
6 王东林 83
7 王东林 85
8 王东林 82
9 王东林 84
10 王东林 78
11 王东林 99
12 王东林 93
1 李宏宇 86
2 李宏宇 81
3 李宏宇 76
4 李宏宇 93
5 李宏宇 88
6 李宏宇 82
7 李宏宇 81
8 李宏宇 93
9 李宏宇 86
10 李宏宇 90
11 李宏宇 67
12 李宏宇 88
  • 英语月考成绩 - english.txt
1 张晓云 78
2 张晓云 83
3 张晓云 92
4 张晓云 66
5 张晓云 82
6 张晓云 89
7 张晓云 79
8 张晓云 68
9 张晓云 96
10 张晓云 91
11 张晓云 87
12 张晓云 82
1 王东林 69
2 王东林 86
3 王东林 73
4 王东林 99
5 王东林 67
6 王东林 95
7 王东林 74
8 王东林 92
9 王东林 76
10 王东林 88
11 王东林 92
12 王东林 56
1 李宏宇 88
2 李宏宇 78
3 李宏宇 92
4 李宏宇 78
5 李宏宇 89
6 李宏宇 76
7 李宏宇 92
8 李宏宇 75
9 李宏宇 88
10 李宏宇 92
11 李宏宇 97
12 李宏宇 85
  • 利用Hive框架,统计每个同学各科月考平均分
    Hive实战:分科汇总求月考平均分,数仓技术Hive入门,hive,hadoop,分科汇总

三、完成任务

(一)准备数据

1、在虚拟机上创建文本文件

  • 在master虚拟机上创建chinese.txt文件
    Hive实战:分科汇总求月考平均分,数仓技术Hive入门,hive,hadoop,分科汇总

  • 创建math.txt文件
    Hive实战:分科汇总求月考平均分,数仓技术Hive入门,hive,hadoop,分科汇总

  • 创建english.txt文件
    Hive实战:分科汇总求月考平均分,数仓技术Hive入门,hive,hadoop,分科汇总

2、上传文件到HDFS指定目录

  • 创建/subjectavg/input目录,执行命令:hdfs dfs -mkdir -p /subjectavg/input
    Hive实战:分科汇总求月考平均分,数仓技术Hive入门,hive,hadoop,分科汇总

  • 将文本文件chinese.txtmath.txtenglish.txt,上传到HDFS的/subjectavg/input目录
    Hive实战:分科汇总求月考平均分,数仓技术Hive入门,hive,hadoop,分科汇总

(二)实现步骤

1、启动Hive Metastore服务

  • 执行命令:hive --service metastore &,在后台启动metastore服务
    Hive实战:分科汇总求月考平均分,数仓技术Hive入门,hive,hadoop,分科汇总

2、启动Hive客户端

  • 执行命令:hive,看到命令提示符hive>
    Hive实战:分科汇总求月考平均分,数仓技术Hive入门,hive,hadoop,分科汇总

3、创建分区的学生成绩表

  • 执行语句:CREATE TABLE student_score ( id INT, name STRING, score INT ) PARTITIONED BY (subject STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ';
    Hive实战:分科汇总求月考平均分,数仓技术Hive入门,hive,hadoop,分科汇总

4、按分区加载数据

  • 加载chinese.txtchinese分区
    Hive实战:分科汇总求月考平均分,数仓技术Hive入门,hive,hadoop,分科汇总

  • 加载math.txtmath分区
    Hive实战:分科汇总求月考平均分,数仓技术Hive入门,hive,hadoop,分科汇总

  • 加载english.txtenglish分区
    Hive实战:分科汇总求月考平均分,数仓技术Hive入门,hive,hadoop,分科汇总

  • 在Hadoop WebUI里查看分区表对应的分区目录
    Hive实战:分科汇总求月考平均分,数仓技术Hive入门,hive,hadoop,分科汇总

  • 数据文件,比如chinese.txt就在对应分区目录里
    Hive实战:分科汇总求月考平均分,数仓技术Hive入门,hive,hadoop,分科汇总

5、查看分区表全部记录

  • 执行语句:SELECT * FROM student_score;
    Hive实战:分科汇总求月考平均分,数仓技术Hive入门,hive,hadoop,分科汇总
1       张晓云  89      chinese
2       张晓云  73      chinese
3       张晓云  67      chinese
4       张晓云  70      chinese
5       张晓云  79      chinese
6       张晓云  87      chinese
7       张晓云  99      chinese
8       张晓云  83      chinese
9       张晓云  97      chinese
10      张晓云  92      chinese
11      张晓云  67      chinese
12      张晓云  86      chinese
1       王东林  49      chinese
2       王东林  83      chinese
3       王东林  67      chinese
4       王东林  49      chinese
5       王东林  93      chinese
6       王东林  87      chinese
7       王东林  65      chinese
8       王东林  92      chinese
9       王东林  60      chinese
10      王东林  94      chinese
11      王东林  81      chinese
12      王东林  90      chinese
1       李宏宇  77      chinese
2       李宏宇  66      chinese
3       李宏宇  89      chinese
4       李宏宇  87      chinese
5       李宏宇  96      chinese
6       李宏宇  79      chinese
7       李宏宇  87      chinese
8       李宏宇  96      chinese
9       李宏宇  69      chinese
10      李宏宇  87      chinese
11      李宏宇  96      chinese
12      李宏宇  79      chinese
1       张晓云  78      english
2       张晓云  83      english
3       张晓云  92      english
4       张晓云  66      english
5       张晓云  82      english
6       张晓云  89      english
7       张晓云  79      english
8       张晓云  68      english
9       张晓云  96      english
10      张晓云  91      english
11      张晓云  87      english
12      张晓云  82      english
1       王东林  69      english
2       王东林  86      english
3       王东林  73      english
4       王东林  99      english
5       王东林  67      english
6       王东林  95      english
7       王东林  74      english
8       王东林  92      english
9       王东林  76      english
10      王东林  88      english
11      王东林  92      english
12      王东林  56      english
1       李宏宇  88      english
2       李宏宇  78      english
3       李宏宇  92      english
4       李宏宇  78      english
5       李宏宇  89      english
6       李宏宇  76      english
7       李宏宇  92      english
8       李宏宇  75      english
9       李宏宇  88      english
10      李宏宇  92      english
11      李宏宇  97      english
12      李宏宇  85      english
1       张晓云  79      math
2       张晓云  83      math
3       张晓云  77      math
4       张晓云  90      math
5       张晓云  89      math
6       张晓云  67      math
7       张晓云  89      math
8       张晓云  93      math
9       张晓云  90      math
10      张晓云  82      math
11      张晓云  77      math
12      张晓云  96      math
1       王东林  78      math
2       王东林  94      math
3       王东林  76      math
4       王东林  70      math
5       王东林  90      math
6       王东林  83      math
7       王东林  85      math
8       王东林  82      math
9       王东林  84      math
10      王东林  78      math
11      王东林  99      math
12      王东林  93      math
1       李宏宇  86      math
2       李宏宇  81      math
3       李宏宇  76      math
4       李宏宇  93      math
5       李宏宇  88      math
6       李宏宇  82      math
7       李宏宇  81      math
8       李宏宇  93      math
9       李宏宇  86      math
10      李宏宇  90      math
11      李宏宇  67      math
12      李宏宇  88      math

6、按姓名和科目分组汇总平均分

  • 执行语句:SELECT name, subject, ROUND(AVG(score), 1) AS average_score FROM student_score GROUP BY name, subject;
    Hive实战:分科汇总求月考平均分,数仓技术Hive入门,hive,hadoop,分科汇总
  • 每个学生三科平均分倒是统计出进来了,但是格式我们并不满意,我们希望每个学生的三科平均分不是分占三行,而是在一行里显示三科平均分。

7、按姓名统计每个学生三科月考平均分

  • 执行语句:SELECT name, ROUND(AVG(CASE WHEN subject = 'chinese' THEN score ELSE NULL END), 1) AS chinese_avg, ROUND(AVG(CASE WHEN subject = 'math' THEN score ELSE NULL END), 1) AS math_avg, ROUND(AVG(CASE WHEN subject = 'english' THEN score ELSE NULL END), 1) AS english_avg FROM student_score GROUP BY name;
    Hive实战:分科汇总求月考平均分,数仓技术Hive入门,hive,hadoop,分科汇总

  • 这个SQL查询语句用于从一个名为student_score的表中检索学生的平均分数,并按学生姓名进行分组。以下是查询的解释说明:

  1. SELECT子句

    • name: 选择学生的姓名。
    • ROUND(AVG(CASE WHEN subject = 'chinese' THEN score ELSE NULL END), 1) AS chinese_avg: 计算学生在"chinese"科目的平均分数,并将结果四舍五入到一位小数。使用CASE语句,只有当科目是"chinese"时才考虑该分数,否则将其视为NULL。
    • ROUND(AVG(CASE WHEN subject = 'math' THEN score ELSE NULL END), 1) AS math_avg: 计算学生在"math"科目的平均分数,同样将结果四舍五入到一位小数。
    • ROUND(AVG(CASE WHEN subject = 'english' THEN score ELSE NULL END), 1) AS english_avg: 计算学生在"english"科目的平均分数,同样将结果四舍五入到一位小数。
  2. FROM子句

    • student_score: 表示数据来自名为student_score的表。
  3. GROUP BY子句文章来源地址https://www.toymoban.com/news/detail-777908.html

    • GROUP BY name: 将结果按学生姓名进行分组,以便计算每个学生在不同科目上的平均分数。
  • 因此,这个查询将返回一个结果集,其中包含每个学生的姓名以及他们在"chinese"、"math"和"english"科目上的平均分数,四舍五入到一位小数。

四、实战总结

  • 本次实战运用Hive处理学生月考成绩数据,通过创建分区表、加载各科目成绩至对应分区,并使用SQL语句计算平均分,展示了Hive在大数据管理、分析查询及统计计算上的灵活性与便捷性。

到了这里,关于Hive实战:分科汇总求月考平均分的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • c语言完成:输入10个学生5门课程成绩,分别用函数求: (1) 每个学生的平均分; (2) 每门课平均分; (3) 每门课不及格人数。 ...

    下面是一个可以实现上述功能的c语言代码示例: ``` #include stdio.h #define STUDENT_NUM 10 // 学生数量 #define COURSE_NUM 5 // 课程数量 int main() { // 存储学生成绩的二维数组 int scores[COURSE_NUM][STUDENT_NUM]; // 存储每个学生的平均分 double student_avgs[STUDENT_NUM]; // 存储每门课平均分 double course_a

    2024年02月04日
    浏览(46)
  • Python---练习:求某同学成绩的总分及平均分

    需求: 已知某同学的语文(70)、数学(90) 、英语(80)、历史(75)、地理(85)五门课的成绩,编程求该同学的总分以及平均分。 思考: 要求是算总分和平均分,先看总分,已经知道了各科成绩,那么可以用把成绩赋值给每个学科的变量名,比如 chinese math english history geography,  几个变

    2024年04月17日
    浏览(45)
  • python使用列表模拟10个评委打分,去除最高、低分后,求平均分

    1、 打分实现 定义一个空列表接收评委的打分  : scores = []   在for循环中接收打分,并对分数进行判断: scores.append(score)#使用append函数将打分存入列表中 判断高低分,然后使用remove函数去掉高低分 2、猜拳实现: 3、1-100偶数累加实现: 法一: 法二:   4、退出循环:bre

    2024年02月11日
    浏览(57)
  • C语言课程设计:学生成绩信息管理系统(排序、平均分、总分)详解

    1、需求分析 利用C语言编写一个可以对学生成绩信息进行管理的系统 0、退出系统 1、录入学生信息和成绩 2、打印学生信息 3、统计学生人数 4、查找学生信息 5、修改学生信息 6、删除学生信息 7、排序学生成绩 8、生成学生信息文件 9、读取文件学生信息 10、输出各科成绩不

    2024年02月11日
    浏览(54)
  • 视频高效剪辑,轻松平均分割视频,生成高质量M3U8

    您是否在处理视频剪辑时常常面临繁琐的切分工作?是否希望能够快速而精准地平均分割视频,并生成适用于在线播放的高质量m3u8文件?现在,我们的智能视频剪辑大师为您提供了一种简便而高效的解决方案!无需复杂操作,只需几步操作,您即可轻松实现视频切分和m3u8生

    2024年02月13日
    浏览(46)
  • python进阶--月考二

    具体要求: 1)该装饰器要求做到通用,可以装饰定长,不定长各种参数的函数.(4分) 2)如果被装饰的函数抛出异常,则记录函数名,异常信息 到文件error_log.txt。(4分) 3)装饰器可以正确计算函数的运行时间。(3分) 4)创建文件power_fun.py 导入 decory.py中写好的装饰器,编

    2024年02月04日
    浏览(25)
  • python进阶--月考三

    创建一个decorator.py的文件用来写2个装饰器 一个统计函数运行时间,一个记录函数的日志 (15分) 具体要求: 1)装饰器要求做到通用,可以装饰定长,不定长各种参数的函数.(4分) 2)装饰器可以正常实现功能。(4分) 3)创建文件first_aunser.py 导入 decorator.py中写好的装饰器

    2024年02月04日
    浏览(27)
  • hive重点内容汇总

                这篇文章一方面是帮助我记忆常用函数,如果工作中忘了不用百度,直接翻这篇文章就好。另一方面也想分享给各位,大家一起学习。                   使用格式: from_unixtime(10位时间戳,\\\'想转成的日期格式\\\') 举例: 日期格式写 \\\'年-月-日 时

    2024年02月10日
    浏览(48)
  • Pandas实战100例 | 案例 15: 移动平均 - 使用 `rolling` 方法

    案例 15: 移动平均 - 使用 rolling 方法 知识点讲解 移动平均是时间序列数据分析中的一种基本技术,用于平滑时间序列中的短期波动并突出长期趋势。Pandas 的 rolling 方法提供了计算移动平均的简便方式。 计算移动平均 : 使用 rolling 方法,你可以指定窗口大小来计算移动平均。

    2024年01月20日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包