hive top n (order by与sort by区别)
来源:互联网 发布:大数据时代的教育创新 编辑:程序博客网 时间:2024/05/18 11:27
我想说的SELECT TOP N是取最大前N条或者最小前N条。
Hive提供了limit关键字,再配合order by可以很容易地实现SELECT TOP N。
但是在Hive中order by只能使用1个reduce,如果表的数据量很大,那么order by就会力不从心。
例如我们执行SQL:select a from ljntest01 order by a limit 10;
控制台会打印出:Number of reduce tasks determined at compile time: 1
说明启动的reduce数量是编译时确定的。
查看该SQL的执行计划,该SQL只启动1个JOB。
假设数据表有1亿条数据,而我们只想取TOP 10,那对1亿条数据在1个reduce中做全排序是非常不合理的。
幸好有sort by,使用sort by替换order by就可以解决这个问题:
select a from ljntest01 sort by a limit 10;
首先执行该SQL控制台打印出:Number of reduce tasks not specified. Estimated from input data size: 1
说明reduce数不是编译时确定的,而是根据输入文件大小动态确定的。
此外查看该SQL的执行计划:
STAGE DEPENDENCIES:
STAGE PLANS:
sort by可以启动多个reduce,每个reduce做局部排序,但是这对于sort by limit N已经够用了。从执行计划中可以看出sort by limit N启动了两个JOB。第一个JOB是在每个reduce中做局部排序,然后分别取TOP N。假设启动了M个reduce,第二个JOB再对M个reduce分别局部排好序的总计M * N条数据做全局排序,取TOP N,从而得到想要的结果。这样就可以大大提高SELECT TOP N的效率。
- hive top n (order by与sort by区别)
- Hive中SELECT TOP N的方法(order by与sort by的区别)
- Hive中SELECT TOP N的方法(order by与sort by)
- Hive中SELECT TOP N的方法(order by与sort by)
- hive 中order by 与 sort by 的区别
- hive sql order by 与sort by
- hive sort by|order by
- hive中order by 和sort by与distribute by
- hive order by,sort by,distributed by
- Hive中Order by和Sort by的区别是什么?
- Hive中Order by和Sort by的区别是什么?
- Hive中Order by和Sort by的区别是什么?
- Hive中Order by和Sort by的区别是什么?
- Hive中Order by和Sort by的区别是什么?
- hive中order by,sort by,distribute by,Cluster By的区别
- hive 中的Sort By、 Order By、Cluster By、Distribute By 区别<转>
- Hive中order by,sort by,distribute by,cluster by的区别
- Hive中order by,sort by,distribute by,cluster by的区别
- 2015百度校园招聘软件研发类笔试题(笔试时间:2014-9-14,西安、哈尔滨、大连站)
- hdu1003Max Sum && hdu 1231 最大连续子序列
- cf467B Fedor and New Game
- Spring-security
- RSNA
- hive top n (order by与sort by区别)
- Android TableLayout实现边框
- MTK_android notes
- 基于Qt5.x的QCA加解密开源项目的编译过程
- Qt vs2010 编译问题
- 使用zTree,由于和bootstrap插件样式冲突导致的树重叠问题!
- 【unity 代码升华篇】委托、事件全解析(二)
- Ubuntu终端Terminal常用快捷键
- StringUtil工具类的常用方法