立即注册 登录
About云-梭伦科技 返回首页

veike的个人空间 https://www.aboutyun.com/?28732 [收藏] [复制] [分享] [RSS]

日志

hadoop mapreduce数据去重

已有 1935 次阅读2015-10-10 10:06 |个人分类:hadoop

假设我们有下面两个文件,需要把重复的数据去除。
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<Object, Text, Text, Text> {  
          
        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<Text, Text, Text, Text> {  
        // 实现reduce函数  
        public void reduce(Text key, Iterable<Text> 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

路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

关闭

推荐上一条 /2 下一条