MapReduce 之 数据去重

最近要更新一些MapReduce实例应用的系列文章。文章结构上包括以下几个部分:1.、问题背景;2、基于MapReduce的解决思路;3、代码实现;4、运行结果。

1. 问题背景

随着数据信息量的急速增长,越来越多的人开始关注存储数据的数据去重技术。数据去重是指对所有的数据进行一个有意义的筛选,去除掉冗余的数据。例如统计大数据集上的数据种类个数、从网站日志中计算访问地等都会涉及到数据去重。下面通过一个例子具体分析。
样例输入:
1)file1:
这里写图片描述
2)file2:
这里写图片描述
要实现的输出:

2. 解决思路

首先对于一个问题,我们要知道希望输出的文件是什么样的。基于这个想要的输出来设计reduce函数和map函数。
对于数据去重,它希望去除掉数据中重复出现的值,也即是希望reduce的输出< key,value>中的key为期望输出的一行数据,value 为空值。那么reduce 输入的< key,list(value)>中的key应该和输出的key保存一致,而对于输入的list(value),不管是什么,都可以在方法中将其设置为空值。
那么在map阶段,map方法的输出key也应该是数据,value 任意值都可以。而map的输入key和value 是已知的,key为每行文本首地址相对于整个文本首地址的偏移量,value 是每行文本,因此在map方法从输入到输出的过程中,只需要将输入的value 赋给输出的key即可。
在mapreduce整个框架下,在map输出和reduce输入之间还有一个shuffule过程,这个是系统自动完成的,但我们要知道它的作用:对每个map的输出结果组合起来并排序,它把所有相同的key的value 放在一个列表中。

3. 代码实现

package org.
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值