【发布时间】:2019-07-23 07:41:19
【问题描述】:
我正在用 java(没有 Hadoop)编写一个 map-reduce 程序,只是为了练习。 经典字数。 每个地图(我有多个并行运行的地图)都会生成一个键值数据,如下所示: 谢谢, 1 爪哇,4 上下文,1 你,1 在, 2 ……,……
现在我必须打乱映射结果并将它们发送到 reduce 任务,但我不知道该怎么做。 我的第一个想法是按照字母顺序拆分 map 的输出,例如,从 a 到 d 的单词发送到第一个 reducer。从 e 到 h 的单词被发送到第二个 reducer,以此类推。
我不确定这是个好主意。单词分布不规则,因此某些减速器可能会比其他减速器接收更多负载。 一种解决方案可能是某种哈希,在这种情况下可以使用 HashMap 的哈希?
有没有更好的方法?
【问题讨论】: