【发布时间】:2013-11-06 21:38:55
【问题描述】:
以字数统计示例的细微变化来解释我正在尝试做的事情。
我有 3 个映射器,每个映射器在 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按以下顺序从每个映射器接收结果,而不用任何键分组:
cat 100
dog 50
fox 10
fox 200
pig 5
rat 1
dog 70
rat 50
fox 10
即只需将每个映射器的结果按值(非键)的降序加载到reducer
【问题讨论】:
-
澄清一下,对于
dog,正常行为是发送到Reducer 的内容是'("dog", {50,70}). Do you want it sent to the Reducer as("dog", { 70,50})? Or do you not want common keys produced by disparateMappers` 要合并吗? -
嗨约翰,你是对的,我不希望由不同的映射器产生的公共密钥被组合。同时我希望单个reducer以计数的降序接收来自所有映射器的元组,因为该算法涉及查找topN元素..
标签: sorting hadoop mapreduce shuffle