关于大数据量排名的请教

10-03-30 kenWT823018

我是一名普通的开发者,同时也是J道的忠诚支持者。目前工作中遇到一个问题,希望帮主能给予指点,

即大数据量的排序问题,如下:

求大于一亿条数据量的前十的排名,也就是将这大于一亿条的数据按降序排列,然后取前十条。

本人目前有个大致的思路,但并未测试,希望大家集思广益,给点建议

先求所有这些数据的平均值,然后再求所有大于平均值的数据的平均值,这样递归下去,直到最后过滤剩下最后十个数据为止,然后再order by一下。

这个方案目前只属于理论讨论阶段,在此算是抛砖引玉吧,谢谢大家的宝贵意见。

1
banq
2010-03-30 20:31

用Hadoop云计算开源项目,这是它擅长的,很多NoSQL 数据库都嵌入了Hadoop

icyiwh
2010-03-31 08:40

10亿必须排序吗? 如果仅仅只是取前10条可以进行一次遍历(当然遍历的过程可以优化), 即其O(n)=n

tianqiq
2010-03-31 10:15

这个感觉是纯算法问题了:

可以这样。 把1亿条数据分成n分。 然后分别取这n份里的前10。 最后在将刚才取到的前10这些放到以前。

再取前10 ,当然这也是个递归的过程。 这样对于多线程,多cpu的机子会更好点。