输入数据来源, 用户查询日志(SogouQ), 感谢搜狗实验室! 此次选择的是精简版(一天数据, 63MB, 解压后145MB),
PS1: 日志原格式是GB2312编码, 一定要记得转成UTF-8
PS2: 日志格式和格式说明: // 搜狗实验室的官方说明
访问时间\t用户ID\t[查询词]\t该URL在返回结果中的排名\t用户点击的顺序号\t用户点击的URL,
这个格式有坑, 深坑:
"该URL在返回结果中的排名\t用户点击的顺序号"这两个字段之间的分割符并不是制表符\t, 而是空格
val sogouQRdd = sc.textFile("hdfs://node1:9000/sogouQ/input") sogouQRdd.cache # 在下一次Action操作时, 将日志文件缓存到内存中
求出日志文件条目总数
val itemCountRdd = sogouQRdd.count itemCountRdd: Long = 1724264
对于每一个查询词, 求出该 URL 在返回结果中的排名为1, 且用户点击的顺序号为1的条目总数
这说明此次搜索结果的URL最优Rank
val suitableRankRdd = sogouQRdd.filter(_.split('\t').length == 5).map(_.split('\t')).filter(_(3).split(' ')(0).toInt == 1).filter(_(3).split(' ')(1).toInt == 1).count suitableRankRdd: Long = 279859
计算查询词 URL 最优 Rank 的频率:
最优Rank频率 = URL最优Rank次数 / 条目总数
suitableRankRdd / itemCountRdd = 0.1623
所以查询词 URL最优Rank 的频率为 16.23%
WordCount 模型适用很多数据统计, 其实简单的 WordCount 可以处理, 分析出很多的信息,