Hive|在Hive中实现WordCount算法
Hive|在Hive中实现WordCount算法
叶一片资料准备:https://wwyl.lanzoum.com/i2iA20tu0jcb
一、创建一个新的文件夹
1 | hadoop fs -mkdir /hadoop_class/hive_wordcount |
二、将student文档从本地上传到hadoop
1 | hadoop fs -copyFromLocal ~/xiyouji_cut.txt /hadoop_class/hive_wordcount |
(理论上一个文件夹只存放与该内容相关的文件,不存放多个,不然数据会合并。)
三、在hive里面创建表
将外部数据源中的数据映射为一个Hive表。
1 | create external table xiyouji (line string) |
四、词频查询
使用Hive查询语言,从外部表”xiyouji”中选择每行数据,并将每行数据按照空格分隔符进行拆分,得到一个字符串数组。
然后,使用Hive函数”explode”将这个数组展开成多行数据,每行只包含一个字符串元素。接着,使用子查询和临时表”temp”将展开后的单词作为新的一列,对它们进行计数并重命名为”total”。
最后,使用”GROUP BY”将所有单词汇总,并按照”total”字段降序排序,返回前10个结果,这些结果表示出现频率最高的10个单词及它们在所有行数据中出现的总次数。
1 | select word,count(1) as total from |
其中,部分代码如解释下
选取一行拆分成数组:
1 | select split(line," ") from xiyouji limit 1; |
选取十行拆分成数组,使用Hive函数”explode”将这个数组展开成多行数据,每行只包含一个字符串元素
1 | select explode (split(line," ")) from xiyouji limit 10; |
至此,该项目已完成。