去重
模式描述
这个模式过滤整个数据集,但它更具有挑战,因为你要过滤掉数据集中的相似记录。
目的
你有一个数据集包含一系列相似的记录,你希望找出其唯一的集合。
结构
它使用了MapReduce框架的功能将相同的键分组到一起来实现去重。这个模式使用mapper做数据的转换,在reducer中不需要做太多工作。在这个模式中可以使用combiner,如果有大量的重复数据,combiner将会非常有用。重复的记录在数据集中经常会相对邻近,因此combiner可以在map阶段实现去重。
mapper获取每个记录并抽取器需要做去重处理的字段。
reducer基于键将null值分组,因此对每一个键我们将得到一个null值。然后简单地输出键,因为我们不关心有多少个null值。因为每一个键是分组到一起的,这个输出数据集将保证是唯一的。
性能分析
主要的考虑是如何确定MapReduce作业需要的reducer数目。reducer的数目高度决定于总的记录条数以及从mapper输出的字节数,这个取决于combiner可以消除多少条数据。通常,如果重复记录在输入split中非常少见,差不多所有的数据都会发送到reducer阶段。