文章目录
一、实战概述
二、提出任务
三、完成任务
(一)准备数据文件
1、在虚拟机上创建文本文件
- 在master上创建text.txt
2、将文本文件上传到HDFS指定目录
- 将text.txt文件上传到HDFS的/hivewc/input目录
(二)实现步骤
1、启动Hive Metastore服务
- 执行命令:
hive --service metastore &
,在后台启动metastore
服务
2、启动Hive客户端
- 执行:
hive
,看到命令提示符hive>
3、基于HDFS文件创建外部表
- 基于
/hivewc/input
目录下的文件,创建外部表t_word
,执行命令:create external table t_word(word string) location '/hivewc/input';
- 加载成绩数据文件到内部表
t_score
,执行命令:load data inpath '/hivewc/input/test.txt' into table t_word;
- 在
MySQL
的hive
数据库的TBLS
表里可以查看外部表t_word
对应的记录
4、利用Hive SQL进行词频统计
编写Hive SQL语句,进行词频统计
执行命令:select word, count(*) from (select explode(split(word, ' ')) word from t_word) t_word_1 group by word;
注意,这里在嵌套查询中,我们为子查询取了一个别名,这个别名是t_word_1,必须取别名,否则会报错。
这条SQL语句是在处理一个名为t_word
的表,该表中有一个word
字段,该字段存储的是由空格分隔的单词字符串。
首先,使用explode(split(word, ' ')) AS word
从t_word
表中的每一行word
字段创建一个新的临时表(别名v_word
)。这里split(word, ' ')
函数将每个word
字段的内容按照空格分割成多个单词,并生成一个多行的结果集,每行包含一个单词。
explode
函数则将这个分割后的数组转换为多行记录,即每一行对应原字符串中的一个单词。
然后,通过GROUP BY word
对新生成的临时表v_word
中的word
字段进行分组,即将所有相同的单词归为一组。
最后,使用COUNT(*)
统计每个单词分组的数量,结果将展示每个单词及其在原始数据集中出现的次数。
整个查询的目的在于统计t_word
表中各个单词出现的频率。
通过这一系列的操作,我们深入学习了Hive
的外部表创建、数据加载、查询、视图创建以及统计分析的操作。希望大家能够在实际应用中灵活运用这些知识。
5、演示分步完成词频统计
-
按空格拆分行数据,执行语句:
SELECT split(word, ' ') FROM t_word;
-
让单词成一列,执行语句:
SELECT explode(split(word, ' ')) AS word FROM t_word;
-
基于视图分组统计操作,执行语句:
SELECT word, COUNT(*) FROM v_word GROUP BY word;