一个简单的单词统计在用MapReduce来实现虽然是经典用例,但是现实起来还是比较复杂的。
下面介绍如何用hive来实现单词统计。
首先准备一个记录单词的word.txt
然后在hive中新建一个表
并将word.txt的数据导入到该表中
然后运行如下的命令
select tt.wordtxt,count(*) cc from ( select explode(split(line,' ')) as wordtxt from word) as tt group by wordtxt sort by cc desc ;
结果如下
其中对该命令进行分析:
select tt.wordtxt,count(*) cc from ( select explode(split(line,' ')) as wordtxt from word) as tt group by wordtxt sort by cc desc ;
select explode(split(line,' ')) as wordtxt from word
不能直接对wordtxt进行group by,因为这个wordtxt不是列属性,所以需要在外面将这个表设置为as tt作为一个表,而此时wordtxt作为tt表的一个属性,这样才能进行group by。