mapreduce实现数据去重

原文链接:

https://www.toutiao.com/i6764933201203823107/

概念:"数据去重"主要是为了掌握和利用并行化思想来对数据进行有意义的筛选。统计大数据集上的数据种类个数、从网站日志中计算访问地等这些看似庞杂的任务都会涉及数据去重。

数据去重的最终目标是让原始数据中出现次数超过一次的数据在输出文件中只出现一次。在MapReduce流程中,map的输出<key,value>经过shuffle过程聚集成<key,value-list>后交给reduce。我们自然而然会想到将同一个数据的所有记录都交给一台reduce机器,无论这个数据出现多少次,只要在最终结果中输出一次就可以了。具体就是reduce的输入应该以数据作为key,而对value-list则没有要求(可以设置为空)。当reduce接收到一个<key,value-list>时就直接将输入的key复制到输出的key中,并将value设置成空值,然后输出<key,value>。

假如我们的数据源是:

mapreduce实现数据去重

 

目的:编写MapReduce程序,根据商品id进行去重,统计用户品中都有哪些商品。

我们先准备模拟生成数据,编写Java代码

创建一个项目,包结构和类如下

mapreduce实现数据去重

 

生成随机数

mapreduce实现数据去重

 

生成随机日期

mapreduce实现数据去重

 

编写IO

mapreduce实现数据去重

 

编写生成代码

mapreduce实现数据去重

 

数据生成

mapreduce实现数据去重

 

创建Maven项目

mapreduce实现数据去重

 

配置pom文件

mapreduce实现数据去重

 

mapreduce实现数据去重

 

mapreduce实现数据去重

 

创建数据去重类

mapreduce实现数据去重

 

编写Map和Reduce

mapreduce实现数据去重

 

mapreduce实现数据去重

 

打包项目

mapreduce实现数据去重

 

启动Hadoop

mapreduce实现数据去重

 

将数据上传

mapreduce实现数据去重

 

将数据上传到HDFS上

mapreduce实现数据去重

 

执行jar包

yarn jar /data/removal/removal-client.jar com.xlglvc.xxx.mapredece.removal.Removal /removalinput/data.txt /removaloutput

mapreduce实现数据去重

 

我们查看下效果

mapreduce实现数据去重

 

mapreduce实现数据去重

 

练习:我们可以再写一个mapreduce,统计里面有多少数据?

posted on 2020-03-20 00:06  那山的狐狸  阅读(677)  评论(0编辑  收藏  举报

导航