“MapReduce设计模式”一书有用于在数据集中查找不同记录的模式。这是算法:
map(key, record):
emit record, null
reduce(key, records):
emit key
在第66页上它说:
组合器总是可以在这种模式下使用,如果有的话可以提供帮助 有大量的重复。
映射阶段发出记录和NullWritable
(不在线上写入)。 Combiner
试图减少什么?没有减少记录。
答案 0 :(得分:2)
它尝试减少地图输出中的重复项。
假设您在每行中都有单词的文本数据:
John
Adam
John
John
如果你可以在地图阶段之后将它们组合起来并且只发送:
,那么将每个John
发送到reducer是没有意义的。
John
Adam
对于每个映射器而言,这是不同的 - 如果您的拆分中有相当数量的非独特记录,则可以节省带宽。