上一篇我们使用自己创作的数据文件,对文件进行了去重、排序、求平均数的操作, 今天我们通过搜狗提供的数据来做一个去重的操作。
搜狗实验室 [数据来源] (http://www.sogou.com/labs/resource/q.php)
这里我使用的是精简版的(一天的数据)
下载好的之后, 默认sougou的文件编码是gbk格式的, 所以在linux下打开是乱码, 所以需要先将文件转化为utf-8格式的。
转化命令:
1 | cat SogouQ.reduced | iconv -f gbk -t utf-8 -c | > corpus.txt |
其中SogouQ.reduced是我们刚下载的sougou的文件, 转化后的文件是corpus.txt
转化好的文件的打开之后的数据格式:
访问时间\t 用户ID\t[查询词]\t该URL在返回结果中的排名\t用户点击的顺序号\t用户点击的URL
对于用户ID是根据用户使用浏览器访问Cookie信息自动赋的值。
样例:

数据去重: 每一个用户ID对于同一个搜索的关键词可能会点击点击几次, 我们的需求是对同一个用户ID的同一个关键词重复的条数去重。
###新建MapReduce工程
#####1. 新建MapReduce工程, SougouDemo
#####2. 将hadoop中的log4j.properties文件放到工程的src文件夹下
#####3. 新建CleanSameData.java类
源码:
1 | package com.au.example; |
#####4. 在hadoop中,新建data_in文件夹,并将下载搜狗数据解压后的文件,上传到hadoop中
1 | hdfs dfs -mkdir /data_in |
####5. 执行程序后, 查看结果
