数据去重主要是为了利用并行化的思想对数据进行有意义的筛选。
统计大数据集上的数据种类个数、从网站日志中计算访问地等这些看似庞杂的任务都会涉及数据去重。
示例文件内容:
此处应有示例文件
设计思路
数据去重的最终目标是让原始数据中出现次数超过一次的数据在输出文件中只出现一次。
自然就想到将同一数据的所有记录都交给一台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被置为空了)。
时间: 2024-10-26 20:25:55