文档章节

用户查询日志(SogouQ)之查询词WordCount

w
 wall--e
发布于 2016/04/25 18:41
字数 607
阅读 150
收藏 0

输入数据来源, 用户查询日志(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操作时, 将日志文件缓存到内存中


实现普通的 WordCount, 但结果不会像 MapReduce 那样按 Key(word) 排序


sogouQRdd.filter(_.split('\t').length == 5): 有两个搜索关键字的字符串(为什么只是两个,别问我是怎么知道的), 居然有制表符\t, 一定要记得过滤掉

val wcWithoutSortRdd = sogouQRdd.filter(_.split('\t').length == 5).map(_.split('\t')(2))
.map((_, 1)).reduceByKey(_ + _)

wcWithoutSortRdd.saveAsTextFile("hdfs://node1:9000/sogouQ/output/wc1")


wcWithoutSortRdd的输出结果Top10

([中天ZT1818评论+site:www.pcpop.com|product.pcpop.com|channel.pcpop.com|pop.pcpop.com],1)
([三一重工+筑路机械],1)
([最快的视频网站],1)
([zhutan],3)
([氟康],3)
([石家庄战役],2)
([国外女子监狱],1)
([A42B331参数],1)
([78bar],1)
([临沂麦可斯],2)


实现按 Value(count) 排序(降序)的 WordCount


思路: 在 wcRdd 的基础上, 先把K(word), V(count)反转, 此时对Key(count)进行排序, 最后再反转回去

val wcSortByCountRdd = wcWithoutSortRdd.map(x => (x._2, x._1)).sortByKey(false).
map(x => (x._2, x._1))

wcSortByCountRdd.saveAsTextFile("hdfs://node1:9000/sogouQ/output/wc2")


思路2: 直接使用 sortBy() 操作

// _._2 : 元组的第2项, 就是 count; false : 按降序排序
val wcSortByCountRdd = wcWithoutSortRdd.sortBy(_._2, false)

wcSortByCountRdd.saveAsTextFile("hdfs://node1:9000/sogouQ/output/wc2")


wcSortByCountRdd的输出结果Top10

([哄抢救灾物资],66906)
([汶川地震原因],58766)
([封杀莎朗斯通],12649)
([一个暗娼的自述],9758)
([广州军区司令员],8661)
([暗娼李湘],8584)
([成都警方扫黄现场],5371)
([百度],4958)    // 用搜狗搜百度, 好像在黑百度, 嘿嘿嘿
([尼泊尔地图],4886)
([现役解放军中将名单],4721)


再次感谢搜狗实验室! 希望有更多的日志文件公布

© 著作权归作者所有

w
粉丝 7
博文 31
码字总数 25016
作品 0
东城
程序员
私信 提问
加载中

评论(1)

cklmnh
cklmnh
您好,您的SogouQ的资源是2006年的吗,还是2008年的,官网链接上给的资源(完整版)没有访问时间的数据项,迷你版和精简版都不存在这个问题。您下载的数据(完整版)有访问时间数据项吗?有的话能给一个链接吗,博客里的链接失效了。谢谢
用户查询日志(SogouQ)之查询词URL最优Rank

输入数据来源, 用户查询日志(SogouQ), 感谢搜狗实验室! 此次选择的是精简版(一天数据, 63MB, 解压后145MB), PS1: 日志原格式是GB2312编码, 一定要记得转成UTF-8 PS2: 日志格式和格式说明: /...

wall--e
2016/04/26
58
0
Spark1.0.0 应用程序部署工具spark-submit

问题导读: 1、Spar的应用程序部署工具都提供哪些功能? 2、Spar的应用程序部署工具有哪些? 3、什么是spark-submit? 随着Spark的应用越来越广泛,对支持多资源管理器应用程序部署工具的需求...

Zero零_度
2016/08/23
13
0
大话大数据(一)

大数据的4V特征: 数据量大,TB->PB 数据类型繁多,结构化、非结构化文本、日志、视频、图片、地理位置等; 商业价值高,但是这种价值需要在海量数据之上,通过数据分析与机器学习更快速的挖...

提广乾
2016/11/25
52
0
Storm+Hbase广告实时统计

本文主要讲述使用Kafka+Strom+Hbase搭建的一套广告实时计算系统。其中服务器显示使用的是SpringBoot+Vue+ElementUI+EChats. 主要内容: 1.需求 2.日志格式 3.Hbase表格设计 4.编写Storm程序 ...

飓风2000
06/24
36
0
我对分布式计算框架的理解与设计

谢谢大家来看这篇文章,我想花点时间分享一下我对分布式计算的理解。 分布式服务有很多,比如hbase, hadoop, spark等,我所要讲述的重点不是这些服务的原理,而是用更浅显的话讲述更深刻的设...

xiaofei
2017/12/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

编程作业20190210900169

1编写一个程序,提示用户输入名和姓,然后以“名,姓”的格式打印出来。 #include <stdio.h>#include <stdlib.h> int main(){ char firstName[20]; char lastName[20]; print......

1李嘉焘1
13分钟前
2
0
补码的优点及原理分析

只讨论整数 1.计算机内部为什么没有减法器? 减法运算本身其实就是加法,如x - y即x +(-y),所以只需要将负数成功表示出来并可以参加加法运算,那加法器就可同时实现“+”和“-”的运算。这...

清自以敬
29分钟前
58
0
Docker 可视化管理 portainer

官网安装指南: https://portainer.readthedocs.io/en/latest/deployment.html docker-compose.yml 位置,下载地址:https://downloads.portainer.io/docker-compose.yml...

Moks角木
56分钟前
5
0
Spring Security 实战干货:必须掌握的一些内置 Filter

1. 前言 上一文我们使用 Spring Security 实现了各种登录聚合的场面。其中我们是通过在 UsernamePasswordAuthenticationFilter 之前一个自定义的过滤器实现的。我怎么知道自定义过滤器要加在...

码农小胖哥
59分钟前
8
0
常见分布式事务解决方案

1 微服务的发展 微服务倡导将复杂的单体应用拆分为若干个功能简单、松耦合的服务,这样可以降低开发难度、增强扩展性、便于敏捷开发。当前被越来越多的开发者推崇,很多互联网行业巨头、开源...

asdf08442a
59分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部