用hive对50万条记录(数据文件demo50w.utf8)进行词频统计,数据清洗转换自行处理,并列出词频最高的20个词。
首先准备好要统计单词的文件,并上传到hdfs上,登录hive,先创建一个表,这个表中只有一列数据,类型为string,用来存放统计单词的文件,把文件内容作为一个字符串存储。然后创建存放单词及计数结果的表,这个表的内容来自select嵌套查询。使用正则表达式进行匹配,从文件中筛选出网址,并统计出出现的频率,查询出频率在前二十的网址。
regexp_extract()为正则表达式,用来清洗数据,group by按单词分组,并按出现的次数排序,降序排序,limit限制显示的条数。
程序:
hive> create table doc_utf(line string);
hive> load data inpath‘/input/demo50w.utf8’ into table doc_utf8;
hive> create table demo1 as
> selectword,count(*) as count from
> (selectregexp_extract(line,'http://.*',0) word from doc_utf) word
> group byword
> order bycount desc
> limit 20;