林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka
摘要:本文讲了如何使用hadoop进行数据去重
工程源码下载:https://github.com/appleappleapple/BigDataLearning/tree/master/Hadoop-Demo
一、环境与数据
1、本地开发环境
Windows7 + Eclipse Luna
hadoop版本:2.6.2
JDK版本:1.8
2、数据来源:
搜狗实验室
http://www.sogou.com/labs/resource/q.php
3、数据格式
用户ID\t[查询词]\t该URL在返回结果中的排名\t用户点击的顺序号\t用户点击的URL
其中,用户ID是根据用户使用浏览器访问搜索引擎时的Cookie信息自动赋值,即同一次使用浏览器输入的不同查询对应同一个用户ID
样例:
3、数据去重
每一人的同一个搜索关键词能可会有多个点击条数。这里要去除同一个人同一个关键词重复的条数
二、编程实现
package com.lin.keyword;
import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;
/**
* 功能概要:数据去重
*
* @author linbingwen
* @since 2016年7月31日
*/
public class CleanSameData {
// map将输入中的value复制到输出数据的key上,并直接输出
public static class Map extends Mapper<Object, Text, Text, Text> {
// 实现map函数
@Override
public void map(Object key, Text value, Context contex