Hive实战:词频统计
作者:mmseoamin日期:2024-02-06

文章目录

  • 一、实战概述
  • 二、提出任务
  • 三、完成任务
    • (一)准备数据文件
      • 1、在虚拟机上创建文本文件
      • 2、将文本文件上传到HDFS指定目录
      • (二)实现步骤
        • 1、启动Hive Metastore服务
        • 2、启动Hive客户端
        • 3、基于HDFS文件创建外部表
        • 4、查询单词表,所有单词成一列
        • 5、基于查询结果创建视图
        • 6、基于视图进行分组统计
        • 7、基于嵌套查询一步搞定
        • 四、总结

          一、实战概述

          • 在大数据实战中,我们利用Hive对存储在HDFS的文本数据进行词频统计。首先,我们在master虚拟机创建test.txt文件,并将其上传至HDFS的/hivewc/input目录作为输入源。随后启动Hive Metastore服务和客户端,创建名为t_word的外部表映射至该HDFS路径,使Hive能够直接访问并解析文本内容。为实现词频统计,精心编写了Hive SQL语句,运用explode和split函数将句子拆分单词,并通过子查询配合GROUP BY进行单词计数。最终成功执行SQL获取每个单词的出现频率,充分展示了Hive处理大规模文本数据的强大功能与灵活性,同时强调了在使用过程中如子查询别名等关键细节要点。

            二、提出任务

            • 文本文件test.txt
              hello hadoop hello hive
              hello hbase hello spark
              we will learn hadoop
              we will learn hive
              we love hadoop spark
              
              • 进行词频统计,结果如下
                hadoop  3
                hbase   1
                hello   4
                hive    2
                learn   2 
                love    1
                spark   2
                we      3
                will    2
                

                三、完成任务

                (一)准备数据文件

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

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

                  Hive实战:词频统计,在这里插入图片描述,第1张

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

                  • 在HDFS上创建/hivewc/input目录

                    Hive实战:词频统计,在这里插入图片描述,第2张

                  • 将test.txt文件上传到HDFS的/hivewc/input目录

                    Hive实战:词频统计,在这里插入图片描述,第3张

                    (二)实现步骤

                    1、启动Hive Metastore服务

                    • 我们需要启动Hive Metastore服务,这是Hive的元数据存储服务。
                    • 执行命令:hive --service metastore &

                      Hive实战:词频统计,在这里插入图片描述,第4张

                      2、启动Hive客户端

                      • 执行命令:`cd /opt/module/hive/``
                      • 再 hive这是我的hive启动方式,有可能你们的方式不一样

                        Hive实战:词频统计,在这里插入图片描述,第5张

                      • 一旦我们看到命令提示符hive>,就表示我们已经成功进入Hive客户端。

                        Hive实战:词频统计,在这里插入图片描述,第6张

                        3、基于HDFS文件创建外部表

                        • 基于/hivewc/input下的文件创建外部表t_word,执行命令:create external table t_word(word string) location '/hivewc/input';

                          Hive实战:词频统计,在这里插入图片描述,第7张

                        • 在查看hive数据库中的表之前,应该先进入mysql,执行use metastore;命令,以此来指定数据库来执行操作。

                          Hive实战:词频统计,在这里插入图片描述,第8张

                        • 在MySQL的hive数据库的TBLS表里,我们可以查看外部表t_word对应的记录。

                          Hive实战:词频统计,在这里插入图片描述,第9张

                        • 加载成绩数据文件到内部表t_score,执行命令:load data inpath '/hivewc/input/test.txt' into table t_word;

                          Hive实战:词频统计,在这里插入图片描述,第10张

                          4、查询单词表,所有单词成一列

                          • 查看单词表记录,执行语句:select word from t_word;

                            Hive实战:词频统计,在这里插入图片描述,第11张

                          • 按空格拆分行数据,执行语句:select split(word , ' ') from t_word;

                            Hive实战:词频统计,在这里插入图片描述,第12张

                          • 让单词成一列,执行语句:select explode(split(word , ' ')) as word from t_word;

                            Hive实战:词频统计,在这里插入图片描述,第13张

                            5、基于查询结果创建视图

                            • 基于查询结果创建了一个视图v_word,执行语句:create view v_word as select explode(split(word , ' ')) as word from t_word;

                              Hive实战:词频统计,在这里插入图片描述,第14张

                            • 查询视图的全部记录,执行语句:select word from v_word;

                              Hive实战:词频统计,在这里插入图片描述,第15张

                              6、基于视图进行分组统计

                              • 基于视图分组统计操作,执行语句:select word, count(*) from v_word group by word;
                              • 执行后我的会报这个错误,那么在此之前执行set hive.exec.mode.local.auto=true;命令,然后再次执行语句

                                Hive实战:词频统计,在这里插入图片描述,第16张

                                Hive实战:词频统计,在这里插入图片描述,第17张Hive实战:词频统计,在这里插入图片描述,第18张

                                7、基于嵌套查询一步搞定

                                • 为了更简便地实现相同的效果,使用嵌套查询:SELECT word, COUNT(*) FROM (SELECT explode(split(word, ' ')) AS word FROM t_word) AS v_word GROUP BY word;

                                  Hive实战:词频统计,在这里插入图片描述,第19张

                                  四、总结

                                  • 该SQL语句通过一系列操作对名为t_word的表中的单词进行统计分析。首先,利用split函数按空格分割word字段内容,形成单词数组;接着,借助explode函数将数组转换为多行记录,每一行代表原字符串中的一个独立单词,并赋予这个临时结果集别名v_word。进一步地,对新生成的v_word表以word字段进行GROUP BY操作,即将所有相同的单词聚合在一起。最后,运用COUNT(*)函数计算每个分组(即每个单词)的数量,从而得出各个单词在原始数据集中出现的频率,实现了对t_word表中单词使用情况的详细统计。