在hive里,有一个表(上亿级别)含有timestamp,需要根据timestamp求最近时间的top10记录,使用select * from table sort by timestamp desc limit 10可以实现。 有个地方不太清楚:sort by 在每个reducer中进行分区内排序,结果并不是全局有序的,但是加上limit后可以取到全局topn的值,这一步是怎么做的?原理是怎样的?有哪位能告知一下?
简单点理解就是分两步去做,首先在每个reduce内部做局部排序,取到每个reduce内部的top10,然后在所有的reduce中做全局排序,找到全局的top10,最终实现全局limit 10.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。