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

文章目录

  • 一、实战概述
  • 二、提出任务
  • 三、完成任务
    • (一)准备数据
      • 1、在虚拟机上创建文本文件
      • 2、上传文件到HDFS指定目录
    • (二)实现步骤
      • 1、启动Hive Metastore服务
      • 2、启动Hive客户端
      • 3、创建分区的学生成绩表
      • 4、按分区加载数据
      • 5、查看分区表全部记录
      • 6、统计每个学生三科月考平均分
  • 四、实战总结

一、实战概述

  • 在这个实战中,我们使用了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框架,统计每个同学各科月考平均分
    在这里插入图片描述

三、完成任务

(一)准备数据

  • 启动hadoop服务
    在这里插入图片描述

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

  • 创建subjectavg目录,在里面创建chinese.txt文件(数据没有显示全)
    在这里插入图片描述
  • 创建math.txt(数据没有显示全)
    在这里插入图片描述
  • 创建english.txt(数据没有显示全)
    在这里插入图片描述

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

  • 创建/subjectavg/input目录,执行命令:hdfs dfs -mkdir -p /subjectavg/input
    在这里插入图片描述
  • 将文本文件chinese.txtmath.txtenglish.txt,上传到HDFS的/subjectavg/input目录
    在这里插入图片描述

(二)实现步骤

1、启动Hive Metastore服务

  • 执行命令:hive --service metastore &,在后台启动metastore服务
    在这里插入图片描述

2、启动Hive客户端

  • 执行命令:hive,看到命令提示符hive>
    在这里插入图片描述

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

  • 执行语句:create table student_score ( id int, name string, score int ) partitioned by (subject string) row format delimited fields terminated by ' ';
    在这里插入图片描述

4、按分区加载数据

  • 加载chinese.txtchinese分区
    在这里插入图片描述
  • 加载math.txtmath分区
    在这里插入图片描述
  • 加载english.txtenglish分区
    在这里插入图片描述

5、查看分区表全部记录

  • 执行语句:select * from student_score;
    在这里插入图片描述
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, 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;
    在这里插入图片描述
  • 这个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子句

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

四、实战总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/600493.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx rewrite重写URL地址, laravel路由404问题

前言 在开发项目时,我面临一个需求:区分移动端和桌面端访问路径。移动端访问应在路径前加上/m/,而桌面端则不需要。例如: 移动端: 域名/m/路由地址桌面端: 域名/路由地址 这种设计在路由规则上带来了一定的重复,因为…

[C#]使用OpenCvSharp实现二维码图像增强超分辨率

【官方框架地址】 github.com/shimat/opencvsharp 【算法介绍】 借助于opencv自带sr.prototxt和sr.caffemodel实现对二维码图像增强 【效果展示】 【实现部分代码】 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin…

【机器学习】循环神经网络(一)

一、网络结构 RNN 处理输入序列时的信息流。 粗体箭头为各时间点信息流的活跃路径,虚线箭头显示当时不活动的连接。 一个简单RNN例子 RNN 不是一类网络,而是适用于不同问题的拓扑结构的集合。循环网络的一个有趣的方面是,有了足够的层和节点&…

export命令详解

export命令详解 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,让我们一同深入了解 Linux 和 Unix 系统中的一个强大命令——export,并…

PC+Wap仿土巴兔装修报价器源码 PHP源码

核心功能: 业主自助预算计算:通过简洁的界面,业主可以输入装修需求,系统自动进行预算计算信息自动收集:系统自动收集业主的基本信息,如姓名、联系方式、房屋面积等一键发送报价:业主完成预算计…

GnuTLS recv error (-110): The TLS connection was non-properly terminated.

bug 解决方案:参考 GnuTLS recv error (-110): The TLS connection was non-properly terminated. 解决方案: apt-get install gnutls-bin git config --global http.sslVerify false git config --global http.postBuffer 1048576000参考

【SpringCloud】7、Spring Cloud Gateway限流配置

1、限流介绍 Spring Cloud Gateway 的限流配置主要涉及到令牌桶算法的实现。令牌桶算法可以对某一时间窗口内的请求数进行限制,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机。 在 Spring Cloud Gateway 中,官方提供了 RequestRateLimiterGatewayFi…

uni-app 前后端调用实例 基于Springboot 上拉分页实现

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…

Grafana相关问题及答案(2024)

1、Grafana 是什么,它用于什么目的? Grafana 是一个高度灵活且富有功能的数据可视化和监控平台,旨在为技术专业人员提供强大的方式来显示和分析他们的数据。下面将详细介绍 Grafana 的关键特点和它的使用场景。 关键特点 1. 数据源的多样性…

【数据库系统概论】数据库并发控制机制——并发操作带来的数据不一致性问题有哪些

系统文章目录 数据库的四个基本概念:数据、数据库、数据库管理系统和数据库系统 数据库系统的三级模式和二级映射 数据库系统外部的体系结构 数据模型 关系数据库中的关系操作 SQL是什么?它有什么特点? 数据定义之基本表的定义/创建、修改和…

算法基础之合并果子

合并果子 核心思想&#xff1a; 贪心 Huffman树(算法): 每次将两个最小的堆合并 然后不断向上合并 #include<iostream>#include<algorithm>#include<queue> //用小根堆实现找最小堆using namespace std;int main(){int n;cin>>n;priority_queue&l…

项目-苍穹外卖基础(持续更新中~)

day1: login的后端实现&#xff1a; day 2:

【java】期末复习知识点

简单不先于复杂&#xff0c;而是在复杂之后。 文章目录 填空题封装包主类开发过程的改变interfaceabstract class访问控制关键字继承多态object 类Java I/O(输入/输出)异常线程和进程创建线程的两种基本方法 编程题Hello World编写Swing程序&#xff0c;显示一个空白窗口 填空题…

【大数据进阶第三阶段之Hive学习笔记】Hive的数据类型与数据操作

【大数据进阶第三阶段之Hive学习笔记】Hive安装-CSDN博客 【大数据进阶第三阶段之Hive学习笔记】Hive常用命令和属性配置-CSDN博客 【大数据进阶第三阶段之Hive学习笔记】Hive基础入门-CSDN博客 【大数据进阶第三阶段之Hive学习笔记】Hive查询、函数、性能优化-CSDN博客 …

奇偶数合并

今天分享一道很有意思的算法题目 1、题目描述 奇偶数合并 将所有相邻且相同的偶数相加放入相邻偶数中间 将所有相邻且相同奇数相加&#xff0c;替换掉这两个相邻且相同的奇数 最后输出合并后的数组结果。 举例 数组[1,2,2,7,8,3,3,6] 数组奇偶数合并之后[1,2,4,2,7,8,6,1…

互联网大厂面试题目

阿里篇 1.1.1 如何实现一个高效的单向链表逆序输出&#xff1f; 1.1.2 已知sqrt(2)约等于1.414&#xff0c;要求不用数学库&#xff0c;求sqrt(2)精确到小数点后10位 1.1.3 给定一个二叉搜索树(BST)&#xff0c;找到树中第 K 小的节点 1.1.4 LRU缓存机制 1.1.5 关于epoll和…

依次判断数组a中的每个字符串长度 是否小于等于数组b中对应字符串长度 numpy.char.less_equal(a,b)

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 依次判断数组a中的每个字符串长度 是否小于等于数组b中对应字符串长度 numpy.char.less_equal(a,b) [太阳]选择题 请问以下代码最终输出结果是&#xff1f; import numpy as np a np.array…

初探ElasticSearch

1.什么是ElasticSearch&#xff1f; ElasticSearch简称ES&#xff0c;也成为弹性搜索&#xff0c;是基于Apache Lucene构建的开源搜索引擎。其实Lucene本身就是一款性能很好的开源搜索引擎工具包&#xff0c;但是Lucene的API相对复杂&#xff0c;而且掌握它需要很深厚的“内功…

通过使用别名让 SQL 更简短-数据库教程shulanxt.com-帆软软件有限公司

MySQL视频教程导航 https://www.shulanxt.com/database/mysqlvideo/p1 SQL 别名 SQL 别名 通过使用 SQL&#xff0c;可以为表名称或列名称指定别名。 基本上&#xff0c;创建别名是为了让列名称的可读性更强。 列的 SQL 别名语法 SELECT column_name AS alias_name FROM …

Linux操作实例 – 输入输出重定向

Linux操作实例 – 输入输出重定向 Input & Output Redirection Examples in Linux By Jackson 1. 前言 在操作计算机的时候&#xff0c;我们能够很容易通过键盘、鼠标给计算机输入信息&#xff08;例如&#xff1a;写公文、邮件&#xff0c;同时通过显示器得到输出。这就…