0


Hive实战:计算总分与平均分

文章目录

一、实战概述

  • 本次实战以Hive为核心,针对学生成绩数据进行统计分析。首先,在虚拟机中创建score.txt文件存储五名学生的成绩记录,并上传至HDFS的/hivescore/input路径下。接着启动Hive Metastore服务和客户端,创建与成绩表结构对应的内部表t_score,并运用load data命令将HDFS数据导入该表。最后,通过编写SQL语句按学生姓名分组,对各科成绩求和计算总分、平均分。此过程充分展示了Hive在大数据处理中的高效性及便利性,只需简单SQL即可实现复杂的数据统计任务,为深入数据分析实践提供了有力支持。

二、提出任务

  • 成绩表,包含六个字段(姓名、语文、数学、英语、物理、化学),有五条记录
    姓名语文数学英语物理化学李小双8978949687王丽霞9480867880吴雨涵9067858260张晓红8776907959陈燕文9795928886

  • 利用Hive框架,计算每个同学的总分与平均分

吴雨涵  404404.0
张晓红  391391.0
李小双  444444.0
王丽霞  418418.0
陈燕文  458458.0

三、完成任务

(一)准备数据文件

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

  • 在master虚拟机上创建score.txt文件
李小双 8978949687
王丽霞 9480867880
吴雨涵 9067858260
张晓红 8776907959
陈燕文 9795928886

在这里插入图片描述

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

  • 在HDFS上创建/hivescore/input目录在这里插入图片描述
  • 将score.txt文件上传到HDFS的/hivescore/input目录在这里插入图片描述

(二)实现步骤

1、启动Hive Metastore服务

  • 执行命令:hive --service metastore &,在后台启动metastore服务

2、启动Hive客户端

  • 执行命令:hive,看到命令提示符hive>

3、创建Hive表,加载HDFS数据文件

  • 创建内部表t_score,执行命令:
  • CREATE TABLE t_score ( name STRING, chinese INT, math INT, english INT, physics INT, chemistry INT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ';在这里插入图片描述
  • 在MySQL的hive数据库的TBLS表里可以查看内部表t_score对应的记录
  • 先进入mysql,更改数据库,执行命令:use metastore;在这里插入图片描述
  • 然后查看内部表对应的记录,执行命令:select TBL_ID,DB_ID,TBL_NAME,TBL_TYPE from TBLS;在这里插入图片描述
  • 加载成绩数据文件到内部表t_score,执行命令:load data inpath '/hivescore/input/score.txt' into table t_score;在这里插入图片描述
  • 查看成绩表全部记录,执行语句:select * from t_score;在这里插入图片描述

4、利用Hive SQL统计总分与平均分

  • 编写Hive SQL语句,进行词频统计
  • 执行命令:SELECT name, SUM(chinese + math + english + physics + chemistry) AS total_score, AVG(chinese + math + english + physics + chemistry) AS average_score FROM t_score GROUP BY name;在这里插入图片描述

在这里插入图片描述

  • 这个SQL语句的功能是在一个名为t_score的表中,根据学生的姓名(name)进行分组,并对每个学生各科成绩进行统计计算。
  • SELECT name: 选择t_score表中的name列,表示我们要按照姓名来显示结果。
  • SUM(chinese + math + english + physics + chemistry) AS total_score: 对每个学生的语文、数学、英语、物理和化学成绩进行求和,并将这一结果命名为total_score。这将计算出每个学生的总分。
  • AVG(chinese + math + english + physics + chemistry) AS average_score: 对每个学生的语文、数学、英语、物理和化学成绩进行求平均值,并将这一结果命名为average_score。这将计算出每个学生的平均分。
  • FROM t_score: 指定数据来源是名为t_score的表。
  • GROUP BY name: 根据name列进行分组,这意味着对于表中的每一条具有不同姓名的记录,都会分别进行总分和平均分的计算。
  • 因此,这个SQL语句的最终功能是输出一个结果集,其中包含每个学生的姓名、他们的总分以及平均分。

四、拓展练习

  • 改变输出格式SELECT CONCAT('(', name, ',', total_score, ',', average_score, ')') AS formatted_scores FROM ( SELECT name, SUM(chinese + math + english + physics + chemistry) AS total_score, AVG(chinese + math + english + physics + chemistry) AS average_score FROM t_score GROUP BY name ) subquery;
  • 子查询(Subquery)在SQL中是指嵌套在另一个查询语句内部的查询。它是一个独立的SELECT语句,作为外部查询的一部分(如WHERE、FROM或JOIN子句中的一个表达式),用于从数据库中检索数据来帮助定义外部查询的行为。
  • 简单来说,子查询首先会执行其内部的查询逻辑,获取结果集,然后这个结果集被用作外部查询条件或者与其他表的数据进行比较、连接等操作。在这里插入图片描述在这里插入图片描述
标签: hive

本文转载自: https://blog.csdn.net/weixin_74836617/article/details/135471373
版权归原作者 0806820 所有, 如有侵权,请联系我们删除。

“Hive实战:计算总分与平均分”的评论:

还没有评论