举一个单词计数的例子来解释我要做的事情。
我有3个Map器,每个Map器在3个大的输入文件上生成一个完整的字数计算结果。假设输出为:
Mapper 1 Result:
-------
cat 100
dog 50
fox 10
Mapper 2 Result:
-------
fox 200
pig 5
rat 1
Mapper 3 Result:
-------
dog 70
rat 50
fox 10
请注意,每个结果都是一个完整的字数计数,具有唯一的键,计算给定文件的结果。
现在在reducer方面,我的算法要求只有一个reducer,由于这里讨论的时间有点太长,我希望每个Map器的结果按计数的降序输入reducer,但不执行任何洗牌和排序步骤。i、 e.我希望reducer按以下顺序接收来自每个Map器的结果,而不按键进行任何分组:
cat 100
dog 50
fox 10
fox 200
pig 5
rat 1
dog 70
rat 50
fox 10
i、 e.只需按值的降序(不是键)将每个Map器的结果加载到reducer中
1条答案
按热度按时间1cosmwyk1#
似乎这应该是一个Map唯一的工作,因为你不想洗牌和排序发生。
如果您真的需要使用reduce,那么我建议您需要一个复合键并进行二次排序。
键将包括Map器id、普通键和计数值。您可以对mapper id进行主排序,对count进行次排序。您还需要一个分组比较器,它不对任何内容进行分组(或者只对Map器id和普通键进行分组)。
再次,看看使用reducer所需要做的所有工作,以防止无序排列和排序,这似乎应该是一个只Map的工作,除非输出必须在单个文件中。