HiveHadoopHive
2025-04-10 11:31阅读:64评论:0
使用Hive代替MapReduce实现单词统计
在 https://www.cnblogs.com/osinn/p/18813258 这篇文章中讲述了Hadoop使用MapReduce实现经典单词统计案例,这次写一篇如何使用Hive代替MapReduce实现单词统计 准备本地文本文件 首先本地磁盘创建一个wordcount.txt文件,并且添加以
- 在 https://www.cnblogs.com/osinn/p/18813258 这篇文章中讲述了Hadoop使用MapReduce实现经典单词统计案例,这次写一篇如何使用Hive代替MapReduce实现单词统计
1
2
3
4
5
itczw技术博客hadoop李四 李四 李四张三 _PROTECTED0__
1
2
3
4
5
6
7
8
9
-- 创建文本表,用于存储需要统计的文本CREATE TABLE raw_text (line STRING); -- 将本地的文本文件内容载入hive 文本表,/home/xxxx/wordcount.txt 为 wordcount.txt 所在磁盘路径LOAD DATA LOCAL INPATH '/home/xxxx/wordcount.txt' INTO TABLE raw_text; -- 可以通过SQL查看表数据select * from raw_text; !image
_PROTECTED0__
#### 创建结果表
- 用于存放统计结果
1
2
CREATE TABLE word_count (word STRING, count INT); ###### 执行单词统计
1
2
3
4
5
6
INSERT INTO TABLE word_countSELECT word, COUNT(1) AS countFROM raw_text LATERAL VIEW EXPLODE(SPLIT(line, ' ')) lv AS wordGROUP BY word; ##### 查看单词统计结果
1
2
select * from word_count; !image
_PROTECTED0__
1
2
INSERT INTO TABLE raw_text values('猪刚烈 猪刚烈 美猴王'); _PROTECTED2_PROTECTED3_PROTECTED0_PROTECTED4_PROTECTED1__表数据再执行统计,二是统计时使用覆盖的方式
##### 方式一
1
2
3
4
5
6
7
8
9
10
-- 清空word_count表数据TRUNCATE TABLE word_count; -- 执行统计INSERT INTO TABLE word_countSELECT word, COUNT(1) AS countFROM raw_text LATERAL VIEW EXPLODE(SPLIT(line, ' ')) lv AS wordGROUP BY word; ##### 方式二
- 统计结果覆盖之前的统计
1
2
3
4
5
6
INSERT OVERWRITE TABLE word_countSELECT word, COUNT(1) AS countFROM raw_textLATERAL VIEW EXPLODE(SPLIT(line, ' ')) lv AS wordGROUP BY word;