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

时间:2015-02-26 06:10:39

标签: java hadoop mapreduce

我有一个3000+键值对的字符串和来自mapreduce程序缩减器部分的长数据类型..说{“Aman”:2.121212,“Bob”:0.343434}。如何根据mapreduce中的值获取前10个和后10个条目?

前10名

  1. {100,Rock} 2. {99.98765,Balboa} 。 。
  2. 底部10

    1. {0.00976,Tardis} 2. {0.555,Taqif} 。
    2. 我有一个解决方案是让他们映射{1:“Aman | 2.1222”},{1:“Bob | 0.343434”}等等然后减少相位字符串分割值。使用树形图和列表存储所有值。首先发出树形图并调用降序地图接口并发出最后10个。

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

      我想有效地使用map reduce来实现这个目标!

1 个答案:

答案 0 :(得分:2)

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

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