Java Reducer中的Hadoop排序
我有一个map reduce代码,在mapper中我正在做一些计算,而在reducer中我正在应用公式以得到结果。我的结果是IntDouble对作为键,文本作为值格式。我需要知道如何对减速器的结果进行排序 这是减速器的输出示例。我需要按钥匙分类。我在mapper中实现了所有代码,它对代码进行了完美的排序,但与reducer不同的是,结果没有排序Java Reducer中的Hadoop排序,java,sorting,hadoop,Java,Sorting,Hadoop,我有一个map reduce代码,在mapper中我正在做一些计算,而在reducer中我正在应用公式以得到结果。我的结果是IntDouble对作为键,文本作为值格式。我需要知道如何对减速器的结果进行排序 这是减速器的输出示例。我需要按钥匙分类。我在mapper中实现了所有代码,它对代码进行了完美的排序,但与reducer不同的是,结果没有排序 [1 0.5] Mr. Nice Guy [1 0.0] Rush Hour [1 0.3] Twin
[1 0.5] Mr. Nice Guy
[1 0.0] Rush Hour
[1 0.3] Twin Dragons
[1 0.6] Snake in the Eagle's Shadow
[1 0.5] Police Story
[1 0.5] Armour of God 2: Operation Condor
[1 0.5] Drunken Master
预期排序列表:
[1 0.0] Rush Hour
[1 0.3] Twin Dragons
[1 0.5] Mr. Nice Guy
[1 0.5] Police Story
[1 0.5] Armour of God 2: Operation Condor
[1 0.5] Drunken Master
[1 0.6] Snake in the Eagle's Shadow
您希望密钥如何排序?
我将定义一个对象
IntDoublePair
,使其具有可比性,实现适合我的比较逻辑,然后在reducer中我将实例化一个列表myList
,在迭代每个键的值时,我将它们添加到myList
。最后对列表进行排序。您还可以搜索“辅助排序mapreduce”。。。在ArrayList中指定结果后,是否应该创建一个方法来对列表进行排序?因为默认的Collections.sort方法似乎不适用于此类字符串。定义IntDoublePair后,将实现可比较的集合。sort将应用于对象并对列表进行排序。这里有一个很好的教程:当我再次思考它时,它不会帮助你。。。因为reducer已经对同一个键的值进行了迭代。。。对不起:/你的具体情况是什么?第二种可能会有所帮助,但可能有更简单的解决办法。。就像分割键一样,用一些分隔符将y坐标附加到每个值上。然后在减速器中按此分隔符拆分。然后,我首先建议的是,我已经通过了链接,但我对如何对IntDoublePair排序的实现感到困惑。因为我需要比较IntDoublePair对象中的Int和Double。