0

以字数示例的细微变化来解释我正在尝试做的事情。

我有 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,并且由于这里讨论的时间有点太长,我希望每个映射器的结果按计数的降序输入reducer,但不执行任何操作洗牌和排序步骤。即我喜欢reducer按以下顺序从每个映射器接收结果,而不用任何键分组:

cat 100
dog 50
fox 10

fox 200
pig 5
rat 1

dog 70
rat 50
fox 10

即只是将每个映射器的结果按值的降序加载到reducer中(不是键)

4

1 回答 1

1

似乎这应该是仅 Map 的工作,因为您不希望 Shuffle 和 Sort 发生。

如果你真的需要使用 Reduce,那么我建议你需要一个复合键并进行二次排序。

键将包括映射器 ID、普通键和计数值。您将对映射器 ID 进行初级排序,对计数进行二级排序。您还需要一个不分组任何内容(或仅按映射器 ID 和普通键分组)的分组比较器。

同样,查看使用 Reducer 以防止 Shuffle 和 Sort 需要做的所有事情,似乎这应该是仅 Map 的工作,除非输出必须在单个文件中。

于 2013-10-28T14:43:10.767 回答