我有一个3000+键值对的字符串和来自mapreduce程序缩减器部分的长数据类型..说{“Aman”:2.121212,“Bob”:0.343434}。如何根据mapreduce中的值获取前10个和后10个条目?
等
我有一个解决方案是让他们映射{1:“Aman | 2.1222”},{1:“Bob | 0.343434”}等等然后减少相位字符串分割值。使用树形图和列表存储所有值。首先发出树形图并调用降序地图接口并发出最后10个。
这是非常低效的!我只使用Java API来获得顶部和底部十个键值对
我想有效地使用map reduce来实现这个目标!
答案 0 :(得分:2)
这是一个相当简单的问题。只需从每个地图任务中排出前10和后10,然后在单个reducer中,只需从所有记录中找到最终的上/下10。在这种情况下,您不会在单个reducer中获取太多记录,因为您只从每个map任务中发出20条记录。注意一件事:从映射器发出一个标志,每个记录都说它是前10或前10的数据。
如果需要进一步的帮助,请告诉我。