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.txt
、math.txt
与english.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.txt
到chinese
分区
- 加载
math.txt
到math
分区
- 加载
english.txt
到english
分区
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
的表中检索学生的平均分数,并按学生姓名进行分组。以下是查询的解释说明:
-
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"科目的平均分数,同样将结果四舍五入到一位小数。
-
FROM子句
student_score
: 表示数据来自名为student_score
的表。
-
GROUP BY子句
GROUP BY name
: 将结果按学生姓名进行分组,以便计算每个学生在不同科目上的平均分数。
- 因此,这个查询将返回一个结果集,其中包含每个学生的姓名以及他们在"chinese"、"math"和"english"科目上的平均分数,四舍五入到一位小数。
四、实战总结
- 本次实战运用Hive处理学生月考成绩数据,通过创建分区表、加载各科目成绩至对应分区,并使用SQL语句计算平均分,展示了Hive在大数据管理、分析查询及统计计算上的灵活性与便捷性。
相关文章:

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

快速搭建知识付费小程序,3分钟即可开启知识变现之旅
明理信息科技知识付费saas租户平台 在当今数字化时代,知识付费已经成为一种趋势,越来越多的人愿意为有价值的知识付费。然而,公共知识付费平台虽然内容丰富,但难以满足个人或企业个性化的需求和品牌打造。同时,开发和…...

【计算机图形学划重点】第一讲-Pipeline and Introduction
基础知识 Vertex(顶点) define the location of primitives in space, and consists of vertex stream. 顶点用于定义空间中基本图形(primitives)的位置。它包含了一个顶点流(vertex stream),…...

面试题-DAG 有向无环图
有向无环图用于解决前后依赖问题,在Apollo中用于各个组件的依赖管理。 在算法面试中,有很多相关题目 比如排课问题,有先修课比如启动问题,需要先启动1,才能启动2 概念 顶点: 图中的一个点,比…...

vite + vue3引入ant design vue 报错
npm install ant-design-vue --save下载插件并在main.ts 全局引入 报错 解决办法一: main.ts注释掉全局引入 模块按需引入 解决办法二 将package.json中的ant-design-vue的版本^4.0.0-rc.4改为 ^3.2.15版本 同时将将package-lock.json中的ant-design-vue的版本…...
使用EasyPoi导入数据并返回失败xls
添加依赖 <!-- https://mvnrepository.com/artifact/cn.afterturn/easypoi-base --> <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.4.0</version> </dependency> 工…...

机械配件移动商城课程概述
项目介绍 开发准备 任务 开源库介绍 框架搭建 工具类...
prometheus-docker 快速安装
镜像加速 sudo mkdir -p /etc/docker sudo tee /ect/docker/daemon.json << "EOF" {"register-mirros": ["http://hub-mirror.c.163.com"] } EOF安装docker export DOWNLOAD_URL"http://mirrors.163.com/docker-ce" curl -fsSl…...

RabbitMQ 核心概念(交换机、队列、路由键),队列类型等介绍
RabbitMQ 核心概念(交换机、队列、路由键),队列类型等介绍 RabbitMQ 是一个消息队列系统,它的核心概念包括交换机(Exchange)、队列(Queue)和路由键(Routing Key),它们一起…...
1001 害死人不偿命的(3n+1)猜想
卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n1。卡拉兹在 1950 年的世界数学家大会上公布了…...

七、HTML 文本格式化
一、HTML 文本格式化 加粗文本斜体文本电脑自动输出 这是 下标 和 上标 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>HTML文本格式化</title> </head><body><b>加粗文本</b><br>…...

OSI 模型和 TCP/IP 模型的异同
开放式系统互联模型(OSI)是一个参考标准,解释协议相互之间应该如何相互作用。TCP/IP协议是美国国防部发明的,是让互联网成为了目前这个样子的标准之一 OSI:物理层,数据链路层,网络层࿰…...

创新性文生视频模型,南洋理工开源FreeInit
文本领域的ChatGPT,画图领域的Midjourney都展现出了大模型强大的一面,虽然视频领域有Gen-2这样的领导者,但现有的视频扩散模型在生成的效果中仍然存在时间一致性不足和不自然的动态效果。 南洋理工大学S实验室的研究人员发现,扩散…...
linux的页缓存page cache
目录 如何查看系统的 Page Cache? 为什么 Linux 不把 Page Cache 称为 block cache? Page Cache 的优劣势 Page Cache 的优势 加快数据访问 减少 IO 次数,提高系统磁盘 I/O 吞吐量 Page Cache 的劣势 由于我们开发的程序要运行的话一般…...

数字IC后端实现之Innovus TA-152错误解析(分频generated clock定义错误)
**ERROR: (TA-152): A latency path from the ‘Fall’ edge of the master clock at source pin… Error Code TA-152 在数字IC后端实现innovus中我们经常会看到这类Error,具体信息如下所示。 Error Message **ERROR: (TA-152): A latency path from the ‘Fa…...

虹科方案丨从困境到突破:TigoLeap方案引领数据采集与优化变革
来源:虹科工业智能互联 虹科方案丨从困境到突破:TigoLeap方案引领数据采集与优化变革 原文链接:https://mp.weixin.qq.com/s/H3pd5G8coBvyTwASNS_CFA 欢迎关注虹科,为您提供最新资讯! 导读 在数字化工厂和智能制造时…...

自检服务器,无需服务器、不用编程。
自检服务器,无需服务器、不用编程。 大家好,我是JavaPub. 这几年自媒体原来热,很多人都知道了个人 IP 的重要性。连一个搞中医的朋友都要要做一个自己的网站,而且不想学编程、还不想花 RMB 租云服务。 老读者都知道,…...
Java并行流parallelStream()下InheritableThreadLocal引起的问题
Java并行流parallelStream()下InheritableThreadLocal引起的问题 引起问题的代码。 List orgs00 Arrays.asList(new Org("aaa"),new Org("bbb"),new Org("aa0"));List orgs orgs00.parallelStream() .map(org -> {// 模拟从数据库中获取 …...

【C++期末编程题题库】代码+详解18道
适合期末复习c看,或者刚入门c的小白看,有的题会补充知识点,期末复习题的代码一般比较简单,所以语法上没那么严谨。本文所有题目要求全在代码块的最上面。 目录 1、设计复数类 2、设计Computer类 3、实现相加的函数模板 4、圆类…...

一种DevOpts的实现方式:基于gitlab的CICD(一)
写在之前 笔者最近准备开始入坑CNCF毕业的开源项目,看到其中有一组开源项目的分类就是DevOpts。这个领域内比较出名的项目是Argocd,Argo CD 是一个用于 Kubernetes 的持续交付 (Continuous Delivery) 工具,它以声明式的方式实现了应用程序的…...

【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...

大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...

ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...