当前位置:Gxlcms > mysql > hadoopmapreduce数据去重

hadoopmapreduce数据去重

时间:2021-07-01 10:21:17 帮助过:41人阅读

hadoop mapreduce数据去重 假设我们有下面两个文件,需要把重复的数据去除。 file0 [plain] 2012-3-1 a 2012-3-2 b 2012-3-3 c 2012-3-4 d 2012-3-5 a 2012-3-6 b 2012-3-7 c 2012-3-3 c file1 [plain] 2012-3-1 b 2012-3-2 a 2012-3-3 b 2012-3-4 d 2012-3-

hadoop mapreduce数据去重

假设我们有下面两个文件,需要把重复的数据去除。

file0

[plain]

2012-3-1 a

2012-3-2 b

2012-3-3 c

2012-3-4 d

2012-3-5 a

2012-3-6 b

2012-3-7 c

2012-3-3 c

file1

[plain]

2012-3-1 b

2012-3-2 a

2012-3-3 b

2012-3-4 d

2012-3-5 a

2012-3-6 c

2012-3-7 d

2012-3-3 c

我们知道,map处理之后,相同的key的值会被聚合起来,交给一个reduce处理,所以,我们可以把输出的内容作为输出的key,reduce原样输出key就OK,mapreduce的代码如下:

[java]

// map将输入中的value复制到输出数据的key上,并直接输出

public static class Map extends Mapper {

private static Text line = new Text();// 每行数据

// 实现map函数

public void map(Object key, Text value, Context context)

throws IOException, InterruptedException {

line = value;

context.write(line, new Text(""));

}

}

// reduce将输入中的key复制到输出数据的key上,并直接输出

public static class Reduce extends Reducer {

// 实现reduce函数

public void reduce(Text key, Iterable values, Context context)

throws IOException, InterruptedException {

context.write(key, new Text(""));

}

}

处理后的文件如下:

[plain]

2012-3-1 a

2012-3-1 b

2012-3-2 a

2012-3-2 b

2012-3-3 b

2012-3-3 c

2012-3-4 d

2012-3-5 a

2012-3-6 b

2012-3-6 c

2012-3-7 c

2012-3-7 d

人气教程排行