Spark基于搜狗日志数据分析
针对搜狗实验室的语料数据-用户查询日志(网页搜索用户查询及点击记录)进行Spark数据分析。
Data 简介
搜索引擎查询日志库设计为包括约1个月(2008年6月)Sogou搜索引擎部分网页查询需求及用户点击情况的网页查询日志数据集合。为进行中文搜索引擎用户行为分析的研究者提供基准研究语料。
格式说明:数据格式为访问时间\t用户ID\t[查询词]\t该URL在返回结果中的排名\t用户点击的顺序号\t用户点击的URL。
其中,用户ID是根据用户使用浏览器访问搜索引擎时的Cookie信息自动赋值,即同一次使用浏览器输入的不同查询对应同一个用户ID。
通过sc读取textFile文件,并进行行统计
过滤有效数据及相关分析
过滤出有效数据
(1)首先调用sogou.map(_.split("\t"))方法,根据“\t"符号对RDD中的每行数据进行切分生成一个字符数组;
(2)然后调用RDD的filter方法对切分后的数据进行过滤,只保留每个字符数组的长度为6的数据;
(3)最后会调用RDD的count方法统计过滤后的数据量。
过滤搜索结果排名和点击结果排名都是第一的数据:
获得搜索结果排名和点击结果排名都是第一的数据。搜索结果排名对应的是改文件中URL
在返回结果中的排名,点击结果排名指的是用户点击的顺序号。经过上面第三步过滤的有
效数据的操作,已经把每行数据切分成一个长度为6的字符数组,要获得搜索结果排名和点
击结果排名都是第一的数据也就是RDD中每个字符数组中第4个元素(索引为3)和第5个元
素(索引为4)的值都为1才满足。因此,下面会连续调用两个filter方法来对数据进行过
滤,然后调用RDD的saveAsTextFile来保存满足要求的数据。
计算用户查询次数排行榜(降序)
计算用户查询次数排行榜(降序),并把结果存储到G盘里的sgresult文件夹下。用户的查询次数指的是每个用户一共查询了多少单词,也就是指同样的用户ID一共查询了多少单词。这里已经在第四步生成的rdd的基础上来计算用户查询次数排行榜
(1)首先,会调用rdd的map方法把rdd中的每个字符数组中索引为1的元素通过一个函数生成key-value型的元组;
(2)然后,调用RDD的reduceByKey方法对key相同的元素进行求和操作;
(3)再调用map方法调整每个元组中key和value的顺序;
(4)接着调用sortByKey方法对交换过key和value顺序的元组按照key的大小进行降序排序;
(5)之后,再交换每个元组的key和value的顺序;
(6)最后通过saveAsTextFile方法把操作结果保存到指定位置的指定目录中。
处理结果如下:
- 点赞
- 收藏
- 关注作者
评论(0)