Hive实战:词频统计
在大数据实战中,我们利用Hive对存储在HDFS的文本数据进行词频统计。首先,我们在master虚拟机创建test.txt文件,并将其上传至HDFS的/hivewc/input目录作为输入源。随后启动Hive Metastore服务和客户端,创建名为t_word的外部表映射至该HDFS路径,使Hive能够直接访问并解析文本内容。为实现词频统计,精心编写了Hive SQL语句,运用explode和s
文章目录
一、实战概述
- 在大数据实战中,我们利用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
文件
2、将文本文件上传到HDFS指定目录
- 在
HDFS
上创建/hivewc/input
目录
- 将
test.txt
文件上传到HDFS的/hivewc/input
目录
(二)实现步骤
1、启动Hive Metastore服务
- 我们需要启动Hive Metastore服务,这是Hive的元数据存储服务。
- 执行命令:
hive --service metastore &
2、启动Hive客户端
- 执行命令:`cd /opt/module/hive/``
- 再
hive
这是我的hive启动方式,有可能你们的方式不一样
- 一旦我们看到命令提示符
hive>
,就表示我们已经成功进入Hive客户端。
3、基于HDFS文件创建外部表
-
基于
/hivewc/input
下的文件创建外部表t_word
,执行命令:create external table t_word(word string) location '/hivewc/input';
-
在查看hive数据库中的表之前,应该先进入mysql,执行
use metastore;
命令,以此来指定数据库来执行操作。
-
在
MySQL
的hive数据库的TBLS
表里,我们可以查看外部表t_word
对应的记录。
-
加载成绩数据文件到内部表
t_score
,执行命令:load data inpath '/hivewc/input/test.txt' into table t_word;
4、查询单词表,所有单词成一列
-
查看单词表记录,执行语句:
select word from t_word;
-
按空格拆分行数据,执行语句:
select split(word , ' ') from t_word;
-
让单词成一列,执行语句:
select explode(split(word , ' ')) as word from t_word;
5、基于查询结果创建视图
-
基于查询结果创建了一个视图
v_word
,执行语句:create view v_word as select explode(split(word , ' ')) as word from t_word;
-
查询视图的全部记录,执行语句:
select word from v_word;
6、基于视图进行分组统计
- 基于视图分组统计操作,执行语句:
select word, count(*) from v_word group by word;
- 执行后我的会报这个错误,那么在此之前执行
set hive.exec.mode.local.auto=true;
命令,然后再次执行语句
7、基于嵌套查询一步搞定
- 为了更简便地实现相同的效果,使用嵌套查询:
SELECT word, COUNT(*) FROM (SELECT explode(split(word, ' ')) AS word FROM t_word) AS v_word GROUP BY word;
四、总结
- 该SQL语句通过一系列操作对名为
t_word
的表中的单词进行统计分析。首先,利用split函数按空格分割word
字段内容,形成单词数组;接着,借助explode函数将数组转换为多行记录,每一行代表原字符串中的一个独立单词,并赋予这个临时结果集别名v_word
。进一步地,对新生成的v_word
表以word
字段进行GROUP BY操作,即将所有相同的单词聚合在一起。最后,运用COUNT(*)函数计算每个分组(即每个单词)的数量,从而得出各个单词在原始数据集中出现的频率,实现了对t_word
表中单词使用情况的详细统计。
更多推荐
所有评论(0)