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

1.下载日志

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

利用Hive分析搜狗用户查询日志_第1张图片

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

2.解决乱码问题

利用Hive分析搜狗用户查询日志_第2张图片
乱码

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

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

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

利用Hive分析搜狗用户查询日志_第3张图片
乱码解决

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张图片
处理好的文本

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张图片

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分析搜狗用户查询日志_第6张图片
  • 查询url中包含baidu的数量
select count(*) from useractive where url like '%baidu%';
利用Hive分析搜狗用户查询日志_第7张图片

你可能感兴趣的:(利用Hive分析搜狗用户查询日志)