数据去重主要是为了利用并行化的思想对数据进行有意义的筛选。

统计大数据集上的数据种类个数、从网站日志中计算访问地等这些看似庞杂的任务都会涉及数据去重。

示例文件内容:

此处应有示例文件

设计思路

数据去重的最终目标是让原始数据中出现次数超过一次的数据在输出文件中只出现一次。

自然就想到将同一数据的所有记录都交给一台reduce机器,无路这个数据出现多少次,只要在最终结果中输出一次就可以了。

具体就是reduce的输入应该以数据作为key,而对value-list没有要求。

当reduce收到一个<key, value-list>是就直接将key复制到输出的key中,并将value设置为空值。

在MapReduce流程中,map的输出<key, value>经过Shuffle过程聚集成<key, value-list>后会交给reduce。

所以从设计好的reduce输入可以反推出map的输出key应该为数据,value任意。继续反推,map输出数据的key为数据,

而在这个实例中每个数据代表输入文件中的一行内容,所以map阶段要完成的任务就是在采用Hadoop默认的作业输入方式之后,

将value设置为key,并直接输出(输出中的value任意)。map中的结果经过Shuffle过程之后交给reduce。

reduce阶段不会管每个key有多少个value,它直接将输入的key复制为输出的key并输出就可以了(输出中的value被置为空了)。

最新文章

  1. ionic 开发笔记
  2. 【Bugly安卓开发干货分享】Android APP 快速 Pad 化实现
  3. pod install 和 pod update的区别
  4. Spark-RDD/DataFrame/DateSet
  5. window.showModalDialog
  6. windows系统下安装 node.js (node.js安装及环境配置)
  7. C# 获取字符串中的英文字母
  8. MFC中psz_data无法读取内存的错误
  9. [macOS] keychain的跳坑之旅!git拉取的权限问题
  10. 应用脚手架创建一个React项目
  11. Java 中 LinkedList 和 ArrayList 的区别
  12. PAT 1004 成绩排名
  13. MySQL 数据库备份策略:全备与增量备份
  14. SpringMVC Controller配置方法有哪几种
  15. Java动态代理机制详解(类加载,JDK 和CGLIB,Javassist,ASM)
  16. Java任务调度开源框架quartz学习
  17. [LeetCode]206. Reverse Linked List(链表反转)
  18. Python运维开发基础05-语法基础
  19. jquery mobile header title左对齐 button右对齐
  20. ubuntu下永久修改DNS

热门文章

  1. sqllite3
  2. shiro 授权介绍
  3. 【LeetCode】Jump Game (一维动态规划 + 线性扫描)
  4. [Firebase] 1. AngularFire, $save, $add and $remove, Forge
  5. [Node.js] Level 5. Express
  6. Andrew Ng机器学习笔记+Weka相关算法实现(四)SVM和原始对偶问题
  7. Cocos2d-x -- 图片菜单按钮
  8. windows curl ssl版本号编译
  9. Jquery—Jquery中的(function($){...})(jQuery)
  10. 基于 bootstrap 的数据展示--bootgrid 样式改动。