《MapReduce设计模式》一书中有查找数据集中不同记录的模式。算法如下:
map(key, record):
emit record, null
reduce(key, records):
emit key
第66页说:
Combiner总是可以在这种模式中使用,并且可以帮助有大量的重复项。
map阶段发出记录和NullWritable
(不写在导线上)。Combiner
试图减少什么?没有要减少的记录
它试图减少映射输出中的重复项。
假设每一行中都有单词的文本数据:
John
Adam
John
John
如果您可以在映射阶段之后将它们组合起来并且只发送:
,则没有必要将每个John
发送到减速机。John
Adam
对于已经存在的每个映射器来说都是不同的,这样可以节省带宽,如果您的分割中有相当数量的非不同记录