Hadoop Mapreduce-10000对列表中的前n个和后n个值



我有一对3000+键值字符串和来自mapreduce程序reducer部分的长数据类型。。say{"Aman":2.121212,"Bob":0.343434}。如何根据mapreduce中的值获得前10个和后10个条目?

前10名

  1. {100,Rock}2.{99.98765,巴尔博亚}。。

底部10

  1. {0.00976,Tardis}2.{0.555,Taqif}。

etc

我的一个解决方案是让他们映射{1:"Aman|2.1222"},{1:"Bob |0.343434"}。。。。。等等,然后在减小相位串分割值中。使用树图和列表来存储所有值。发出树映射的前10个,并调用递减映射接口,发出最后10个。

这是非常低效的!。我使用Java API只是为了获得顶部和底部的十个键值对

我想有效地使用地图还原来实现这一点!

这是一个相当简单的问题。只需从每个映射任务中发出顶部10和底部10,然后在单个reducer中,只需从所有记录中找到最终的顶部/底部10。在这种情况下,您不会在单个reducer中获得太多记录,因为您只会从每个映射任务中发出20条记录。注意一件事:From映射器会为每条记录发出一个标志,表示它是前10名或后10名的数据。

如果需要进一步的帮助,请告诉我。

最新更新