商务服务
搜狗搜索日志分析
2024-11-01 00:58

本文利用搜狗搜索日志的500w条数据,对搜索日志进行了一系列的分析。主要分为两个阶段,第一阶段是数据准备、数据预处理和数据加载阶段,第二阶段为分析阶段。

搜狗搜索日志分析

第一阶段首先下载数据,并在自己电脑上安装好实验所需的环境,然后通过数据扩展和数据过滤对原数据进行预处理,得到含有单独年、月、日、小时等字段且关键词和UID不为空的数据,最后将数据加载到HDFS上,并在Hive上创建数据库和数据表,将过滤后的数据灌入Hive中对应的表中,因而后续便可以通过在Hive中执行SQL语句对日志数据进行查询分析。

第二阶段为分析阶段,也分为两部分,一部分是单维度的数据描述性分析,另一部分时多维度的用户行为分析。在单维度的数据描述行分析中,分别针对总的条数、时间、关键词、UID、URL、RANK等单个的字段进行描述统计,例如对每个时间段的查询条数、关键词搜索排行榜、UID搜索排行榜、URL搜索排行榜等进行了查询统计,从而对数据有了一个大概的全局的把握;在多维度的用户行为分析中,以查询最多的用户、点击最多的网址、指定的关键词等为切入点进行深入的用户行为分析,例如在对查询最多的用户的用户行为分析中,通过其搜索的关键词及其频次,得到其目前的兴趣点等,通过其在每个时段的搜索次数,得到其大致的时间行为规律,这对于理解用户行为,描述用户画像,从而定向地针对性地进行广告推荐都是有一定的意义的。

Cloudera QuickStart VM将包含所需的所有内容,例如CDH,Cloudera Manager,Cloudera Impala和Cloudera Search等,还包括教程,示例数据和入门脚本。Cloudera QuickStart虚拟机(单节点集群)可以轻松快速地进行CDH实验,以便进行测试,演示和自学,并包括Cloudera Manager以管理您的集群。

本文的使用的Cloudera QuickStart VM的版本是:

Cloudera-quickstart-vm-5.5.0-0-virtualbox

操作系统:Red Hat (64 bit)

内存大小:4096MB

处理器:2

所使用的virtualbox的版本是:VirtualBox-4.3.12-93733-Win

Cloudera QuickStart VM开启后的截图如下:

 

Hive查询操作页面截图如下:

本文选取搜狗实验室提供的搜狗搜索日志数据,共计五百万条,每一行为一条记录,每条记录基本上含有ts、uid、rank、order、url等字段,字段的具体意义如表1所示。

表1 搜索日志中的内容

名称

内容

ts

用户点击发生时的日期时间

uid

由系统自动分配的用户识别号

rank

该URL在返回结果中的排名

order

用户点击的顺序号

url

用户点击的URL

其中,UID是根据用户使用浏览器访问搜索引擎时的cookie信息自动赋值,即同一次使用浏览器输入的不同查询对应同一个用户识别号。

将原数据中包含时间的字段拆分并拼接,添加年、月、日、小时字段,以便后续在HDFS中进行分块存储。分割时间字段的shell脚本sogou-log-extend.sh的具体代码如下:

awk -F ' ' '{print $0" "substr($1,0,4)" "substr($1,4,2)" "

substr($1,6,2)" "substr($1,8,2)}' $infile > $outfile

[cloudera@quickstart ~]$ bash /home/cloudera/sogou-log-extend.sh /home

/cloudera/500w/sogou.500w.utf8 /home/cloudera/500w/sogou.500w.utf8.ext

则sogou.500w.utf8.ext文件即为在原数据的基础上添加年、月、日、小时字段的文件。

完成数据扩展后,然后过滤UID和keyword字段为空的记录。数据过滤的shell脚本sogou-log-filter.sh的具体代码如下:

awk -F " " '{if($2 != "" && $3 != "" && $2 != " " && $3 != " ") print $0}' $infile > $outfile

[cloudera@quickstart ~]$ bash /home/cloudera/sogou-log-filter.sh /home

/cloudera/500w/sogou.500w.utf8.ext /home/cloudera/500w/sogou.500w.utf8.

flt

则sogou.500w.utf8.flt即为过滤后的数据文件。

将原数据文件sogou.500w.utf8和过滤后的数据文件sogou.500w.utf8.flt加载到HDFS上。在系统终端执行如下代码:

hadoop fs -mkdir -p /sogou/20111230

hadoop fs -put https://blog.csdn.net/ban2413/article/details/sogou.500w.utf8 /sogou/20111230

hadoop fs -mkdir -p /sogou_ext/20111230

hadoop fs -put https://blog.csdn.net/ban2413/article/details/sogou.500w.utf8.flt /sogou_ext/20111230

由此,已将数据加载到HDFS系统中,然后在Hive上创建日志数据的数据表。

首先在终端启动hive,在hive环境下创建数据库sogou:

hive> create database sogou;

hive> use sogou;

然后,创建扩展4个字段(year, month, day, hour)数据的外部表:

hive> CREATE EXTERNAL TABLE sogou.sogou_ext_20111230(

> url STRING,

> COMMENT 'This is the sogou search data of extend data'

> STORED AS TEXTFILE

> LOCATION '/sogou_ext/20111230';

创建带分区的表:

hive> CREATE EXTERNAL TABLE sogou.sogou_partition(

> url STRING

> COMMENT 'This is the sogou search data by partition'

> partitioned by (

> STORED AS TEXTFILE;

最后,把HDFS中的数据灌入到刚刚创建的表中:

hive> set hive.exec.dynamic.partition.mode=nonstrict;

hive> INSERT OVERWRITE TABLE sogou.sogou_partition PARTITION(year,month,

day,hour) select * from sogou.sogou_ext_20111230;

到现在为止,已把经过预处理的数据加载到hive中,后续便可以在hive中执行SQL语句进行查询分析。

查看前10条数据:

hive> select * from sogou.sogou_ext_20111230 limit 10;

前10条数据的具体信息如下:

查询数据的总条数:

hive> select count(*) from sogou.sogou_ext_20111230;

查询非空查询条数:

hive> select count(*) from sogou.sogou_ext_20111230 where keyword is not null and keyword !='';

查询无重复总条数(根据ts、uid、keyword、url)

hive> select count(*) from (select ts,uid,keyword,url,count(*) as cnt from sogou.sogou_ext_20111230 group by ts,uid,keyword,url) a where a.cnt==1;

查询UID唯一的条数:

hive> select count(distinct(uid)) from sogou.sogou_ext_20111230;

可知,(a) 本数据文件中共包含500万条数据;

(b) 非空查询条数为5000000条,即所有的数据的keyword都不为空;

(c) 以ts、uid、keyword、url字段作为判断记录是否重复的标准,得到的无重复总条数为4998321条;

(d) UID唯一的条数共有1352664条,即在此段时间内共有1352664个用户进行来搜狗搜索。

查询每个时间段查询的条数:

hive> select year,month,day,hour,count(*) as cnt from

 sogou.sogou_ext_20111230 group by year,month,day,hour order by

 year,month,day,hour;

time

cnt

time

cnt

2011123000

90752

2011123017

289648

2011123001

65702

2011123018

295207

2011123002

45880

2011123019

340115

2011123003

34242

2011123020

353099

2011123004

27922

2011123021

328949

2011123005

28213

2011123022

270842

2011123006

32988

2011123023

194554

2011123007

52832

2011123100

64

2011123008

165616

2011123101

2011123009

279104

2011123102

2011123010

315973

2011123103

2011123011

276103

2011123104

2011123012

274234

2011123106

2011123013

295936

2011123109

2011123014

306242

2011123116

2011123015

318645

2011123120

2011123016

317120

   

根据上面的得到的数据,绘制2011年12月30日这一天各时间段的查询条数的条形图如下:

可知,(a) 2011年12月30日这一天中共有4999918条,而2011年12月31日仅有82条,可能本数据集中采集的12月31日的数据不全;

(b) 在2011年12月30日这一天中,0-4时的的查询次数逐渐减少,到4时达到最低,然后慢慢上升,特别在7-9时的增加特别显著,到9-10时逐渐趋于稳定,每个小时大概有300000次查询,到21时后查询次数开始减少。基本符合人们的作息时间;

(c) 在查询次数稳定的时间段内,即9-21时,中间有两次低谷,分别在11-12、17-18,这可能是因为此时间段是人们的中饭、晚饭时间,所以表现出查询次数的略微减少。

查询关键词的长度指的是用户提交的查询中包含几个词语或字(用空格隔开的)。

查询关键词的平均长度

hive> select avg(a.cnt) from (select size(split(keyword,'\s+')) as cnt from sogou. sogou_ext_20111230) a;

可知查询关键词的平均长度为1.0869984,这说明用户输入的查询通常比较短,这也意味着中文搜索引擎得到的用户需求信息更少,需要对用户需求有更多的分析和经验,才能更加准确地返回用户需求的信息。

查询关键词各长度的条数

hive> select a.cnt,count(*) as total from( select uid,size(split(keyword,

'\s+')) as cnt from sogou.sogou_ext_20111230) a group by a.cnt order by a.cnt;

a.cnt

4672047

175

21

10

260746

12

125

22

48424

13

82

23

4

11359

50

26

3288

15

38

6

1522

16

33

31

7

859

17

24

32

8

506

18

41

36

9

328

19

8

45

10

263

20

图表表示如下:

可知,(a) 查询关键词的长度最短为1个词,最长为45个词;

(b) 关键词长度为1的条数为4672047条,关键词长度为2的条数为260746,关键词长度为3的条数为48424,关键词长度为4的条数为11359条,关键词长度为5的条数为3288,关键词长度为6的条数为1522,而关键词长度大于6的条数低于1000条,关键词长度大于12的条数低于100条,关键词长度为36、45的条数仅为1条;

(c) 查询关键词长度为1的条数占总查询条数的93.44%,查询关键词长度为2的条数占5.21%,即查询关键词的长度小于等于2的条数为98.65%,几乎占据了所有的查询条数,这也再次说明了用户的查询关键词长度一般为1-2个词,与上面得到的查询关键词平均长度为1.087相符;

(d) 从图中也可以看出,关键词长度为1的条数远大于关键词长度为2的条数,可知,大多数查询还是只用一个关键词。

查询查询频度最高的前1000词:

hive> select keyword,count(*) as cnt from sogou.sogou_ext_20111230 group by keyword order by cnt desc limit 1000;

得到的部分结果如下(截取前50):

keyword

cnt

keyword

cnt

百度

38441

龙门飞甲

3917

baidu

18312

qq个性签名

3880

人体艺术

14475

张去死

3848

4399小游戏

11438

cf官网

3729

qq空间

10317

凰图腾

3632

优酷

10158

快播

3423

新亮剑

9654

金陵十三钗

3349

馆陶县县长闫宁的父亲

9127

吞噬星空

3330

公安卖萌

8192

dnf官网

3303

百度一下 你就知道

7505

武动乾坤

3232

百度一下

7104

新亮剑全集

3210

4399

7041

电影

    以上就是本篇文章【搜狗搜索日志分析】的全部内容了,欢迎阅览 ! 文章地址:http://dfvalve.xrbh.cn/news/8820.html 
     资讯      企业新闻      行情      企业黄页      同类资讯      首页      网站地图      返回首页 迅博思语资讯移动站 http://keant.xrbh.cn/ , 查看更多   
最新新闻
云南网络营销软件哪个好?权威推荐助您快速选择
在数字化时代,网络营销软件成为了许多企业实现营销目标的重要工具。然而,市面上网络营销软件琳琅满目,选择一个适合自己的并不
宫崎骏的时代结束了
在《你想活出怎样的人生》之前,宫崎骏一直是著名的退休诈骗犯。七次退休又七次复出,年过八旬,创作欲还是旺盛到令人害怕。然而
个人大数据信用查询平台哪个更准确一些?蘑菇画像个人大数据信用报告查询平台更好用
个人大数据信用查询平台哪个更准确一些?蘑菇画像个人大数据信用报告查询平台更好用,个人大数据信用查询平台市面上还是比较多的
小红书关键词热度查询!国风大潮下,品牌怎么玩出花样、玩出水平?
国风,是当下年轻人钟爱的潮流。汉服穿搭、文物手办、国潮仿妆……频频出圈。“民族的就是世界的”,国风的影响力可谓深远,一说
app推广接单发布平台哪个好?怎么领取任务赚钱?
最近几年,随着互联网的快速发展,利用网络兼职的赚钱方式也呈现越来越火,非常受大众欢迎的趋势。而且其种类也非常多:微商、社
【可打印】文学常识常考100题汇总,初中生练一练!(部编版初中语文)
关注本公众号,私信发送数字:2493,领取电子打印版文学常识1、成语“万事俱备,只欠东风”是根据《三国演义》________ (战役)
“迎旅发大会 游美丽望城”望城首届文旅短视频大赛,最高3万奖励等你来拿!
湘江水浩浩奔腾,流淌沧桑巨变。铜官窑静穆肃然,在这里诉说着望城的厚重历史,流传着“君生我未生,我生君已老”凄美爱情故事;落日
mysql导入大txt文件怎么打开_mysql怎么导入txt文件?
有时候我们在使用mysql数据库的时候,想导入txt文本文档,要怎么操作呢?下面本篇文章就来给大家介绍一下方法
寸头抖音短视频教程_人开始衰老的迹象是什么
岁月不饶人,我才50出头,可是许多衰老迹象已经越来越明显,惹得中医闺蜜笑话这样的我。1、觉得右后背和肩膀疼,出现“五十肩”
什么是网站页脚:以及最佳页脚设计示例
主体内容外,网站还包括页眉和页脚,用于帮助访问者的特定目的。由于我们认为网站页脚设计同样重要,我们整理了10个最佳免费网站
本企业新闻