1.应用场景
数据去重属于数据预处理的一部分,在大量数据中发现重复的数据并清理,常用于统计大数据集的数据种类个数、网站日志中计算访问IP等场景。
2.需求分析
2.1 输入,多个文本文件
文件1
192.169.49.11
192.169.49.12
192.169.49.13
192.169.49.13
192.169.49.13
...
文件2
192.169.49.11
192.169.49.15
192.169.49.16
192.169.49.14
192.169.49.14
2.2 输出
192.169.49.11
192.169.49.12
192.169.49.13
192.169.49.14
192.169.49.15
192.169.49.16
3.实现思路
数据去重的最终目标是让原始数据中出现次数超过一次的数据在输出文件中只出现一次。我们自然而然会想到将同一个数据的所有记录都交给reduce处理,无论这个数据出现多少次,只要在最终结果中输出一次就可以了。即reduce的输入应该以数据作为key,而对value-list则没有要求。当reduce接收到一个<key,value-list>时就直接将key复制到输出的key中,并将value设置成空值(new Text(""))。
4.代码实现
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
i