利用Hive分析搜狗用户查询日志

1.下载日志

http://www.sogou.com/labs/resource/q.php进行下载,我们下载的是mini版本

《利用Hive分析搜狗用户查询日志》

图片上面的SougouQ.sample文件是我解压出来的mini版本的文件,但是当我们打开文件的时候发现里面是乱码怎么办呢?

2.解决乱码问题

《利用Hive分析搜狗用户查询日志》 乱码

从上图明显发现文件内容呈现乱码,这个时候我们用下面的命令来转换文件的编码格式,产生不乱码的文件,来供我们查看。

iconv -f gbk -t utf8 Sougou.sample > Sougou1.sample

打开我们转换过后的文件,可以看到,搞定了。

《利用Hive分析搜狗用户查询日志》 乱码解决

3.转换文件的分隔符号

当我用pandas的dataFrame尝试载入数据的时候,我发现pagerank和clickorder两个字段之间的分隔符号不是所谓’\t’制表符。这个时候我用python将它转换成以逗号进行分隔。

#!/usr/bin/env python
lines = open('/home/xuzhang/data/spark/SogouQ.sample').readlines()
fp = open('/home/xuzhang/data/spark/Sougou.sample','w')
for line in lines:
    fp.write(",".join(line.split()))
    fp.write("\n")

《利用Hive分析搜狗用户查询日志》 处理好的文本

4.创建hive表

create table useractive(
time string,
userid string,
keyword string,
pagerank int,
clickorder int,
url string)
row format delimited
fields terminated by ','
lines terminated by '\n';

《利用Hive分析搜狗用户查询日志》

5.导入数据

load data local inpath 'file:///soug.sample' overwrite into table useractive;

6.进行sql查询

  • 查询点击最多的用户的前十个id
select userid,count(*) as c from useractive group by userid order by c desc limit 10;

《利用Hive分析搜狗用户查询日志》

  • 查询url中包含baidu的数量
select count(*) from useractive where url like '%baidu%';

《利用Hive分析搜狗用户查询日志》

    原文作者:zhangxu0636
    原文地址: https://www.jianshu.com/p/b82e3a300cc8
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞