今天的主题只有一句:
$hive>select t.word,count(*) c from ((select explode(split(line ' ')) as word from doc) as t) group by t.word order by c desc limit 2;
这条在hive中的语句能够实现wordcount的案例,乍一看很长很复杂,可是细分来看可以分为以下几个步骤:
Step1:select explode(split(line ' ')) as word from doc 这条语句首先通过split()函数对line中的内容按照空格切分,再通过explode()函数将切分好的内容炸裂成一个个的字母——由于explode()函数传参需要hive中的数组格式,而正好split的返回结果就是所需要的格式。
Step2:炸裂完成之后,将之记作为t。使用子查询的方式,查询t.word,count(*) 两个内容;
通过单词的内容进行分组,再利用count()计数结果进行倒序排序;
排序显示其前两名。