在Hadoop中选择不同的记录并使用组合器

时间:2014-07-16 16:23:45

标签: java hadoop mapreduce distinct-values

“MapReduce设计模式”一书有用于在数据集中查找不同记录的模式。这是算法:

map(key, record):
    emit record, null

reduce(key, records):
    emit key

在第66页上它说:

  

组合器总是可以在这种模式下使用,如果有的话可以提供帮助   有大量的重复。

映射阶段发出记录和NullWritable(不在线上写入)。 Combiner试图减少什么?没有减少记录。

1 个答案:

答案 0 :(得分:2)

它尝试减少地图输出中的重复项。

假设您在每行中都有单词的文本数据:

John
Adam
John
John

如果你可以在地图阶段之后将它们组合起来并且只发送:

,那么将每个John发送到reducer是没有意义的。
John
Adam

对于每个映射器而言,这是不同的 - 如果您的拆分中有相当数量的非独特记录,则可以节省带宽。