我们正在编写MapReduce程序,我们想知道如何使reducer生成按值列表大小排序的输出。
我在网上搜索,基本上所有的方法都谈到了二级排序。但是,鉴于Mappers不知道最终的列表大小,它们不能像大多数文章一样直接形成复合键。
我们提出了一个想法,但似乎并不聪明。在第一次M / R之后,我们得到了<K, list<V>>
对,我们可以使用<list_size, Pair<K, List<V>>>
来获得新的M / R.然后它将由list_size命令。
我们有什么方法可以使用一个M / R来实现这个目标吗?由于reducer在所有映射器之后启动,因此所有<K, list<V>>
对都应该可用并且能够进行排序。它看起来很简单,我相信有一些内置的库方法,遗憾的是我们都不知道。
任何提示都将受到赞赏:)