我有发出文本(水果名)键和一个自定义的复合值城市映射器:计数。我想在复合值到达减速器之前通过计数对复合值进行排序,以便减速器可以快速确定哪个城市的计数最高。Java的MapReduce的排序组合值
的复合值类是WritableComparable的延伸,并且具有用于检索计数和城市方法。
什么我减速当前接受:
reducer 1 - oranges:<london:2, chicago:15, charleston:6>
reducer 2 - apples:<charleston:31, london:3, chicago:29>
...
我希望我的减速器收到什么:
reducer 1 - oranges:<chicago:15, charleston:6, london:2>
reducer 2 - apples:<charleston:31, chicago:29, london:3>
从逻辑上讲,我怎么做到这一点?我读过几篇有关Secondary Sorting/Ordering的文章,但他们倾向于关注复合键而不是复合值。我的密钥不需要进一步分区,也不需要进一步分类。
此外,通过复合VALUE不是复合键排序!
的可能的复制[hadoop的地图减少二次分选(http://stackoverflow.com/questions/18395998/hadoop-map-reduce-secondary-sorting) –