上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

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

guduadmin11天前

文章目录

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

          一、实战概述

          • 在这个实战中,我们使用了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实战:分科汇总求月考平均分,在这里插入图片描述,第1张

                    三、完成任务

                    (一)准备数据

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

                    • 在master虚拟机上创建chinese.txt文件

                      Hive实战:分科汇总求月考平均分,在这里插入图片描述,第2张

                    • 创建math.txt文件

                      Hive实战:分科汇总求月考平均分,在这里插入图片描述,第3张

                    • 创建english.txt文件

                      Hive实战:分科汇总求月考平均分,在这里插入图片描述,第4张

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

                      • 创建/subjectavg/input目录,执行命令:hdfs dfs -mkdir -p /subjectavg/input

                        Hive实战:分科汇总求月考平均分,在这里插入图片描述,第5张

                      • 将文本文件chinese.txt、math.txt与english.txt,上传到HDFS的/subjectavg/input目录

                        Hive实战:分科汇总求月考平均分,在这里插入图片描述,第6张

                        (二)实现步骤

                        1、启动Hive Metastore服务

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

                          Hive实战:分科汇总求月考平均分,在这里插入图片描述,第7张

                          2、启动Hive客户端

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

                            Hive实战:分科汇总求月考平均分,在这里插入图片描述,第8张

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

                            • 执行语句:CREATE TABLE student_score ( id INT, name STRING, score INT ) PARTITIONED BY (subject STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ';

                              Hive实战:分科汇总求月考平均分,在这里插入图片描述,第9张

                              4、按分区加载数据

                              • 加载chinese.txt到chinese分区

                                Hive实战:分科汇总求月考平均分,在这里插入图片描述,第10张

                              • 加载math.txt到math分区

                                Hive实战:分科汇总求月考平均分,在这里插入图片描述,第11张

                              • 加载english.txt到english分区

                                Hive实战:分科汇总求月考平均分,在这里插入图片描述,第12张

                              • 在Hadoop WebUI里查看分区表对应的分区目录

                                Hive实战:分科汇总求月考平均分,在这里插入图片描述,第13张

                              • 数据文件,比如chinese.txt就在对应分区目录里

                                Hive实战:分科汇总求月考平均分,在这里插入图片描述,第14张

                                5、查看分区表全部记录

                                • 执行语句:SELECT * FROM student_score;

                                  Hive实战:分科汇总求月考平均分,在这里插入图片描述,第15张

                                  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实战:分科汇总求月考平均分,在这里插入图片描述,第16张

                                  • 每个学生三科平均分倒是统计出进来了,但是格式我们并不满意,我们希望每个学生的三科平均分不是分占三行,而是在一行里显示三科平均分。

                                    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实战:分科汇总求月考平均分,在这里插入图片描述,第17张

                                    • 这个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"科目的平均分数,同样将结果四舍五入到一位小数。
                                        • FROM子句

                                          • student_score: 表示数据来自名为student_score的表。
                                          • GROUP BY子句

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

                                        四、实战总结

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

网友评论

搜索
最新文章
热门文章
热门标签