注意:与数据库中 order by 的区别在于:order by 在 hive.mapred.mode = strict 模式下必须指定 limit 否则执行会报错。
hive>select*from test orderby id;
FAILED: Error in semantic analysis: 1:28In strict mode,ifORDERBYis specified,LIMIT must also be specified. Error encountered near token 'id'
原因: 在 order by 状态下所有数据会到一台服务器进行 reduce 操作也即 只有一个 reduce,如果在数据量大的情况下会出现无法输出结果的情况,如果进行“limit n”,那只有 “n * map number”条记录传入到 reduce 端,只有一个 reduce 也可以处理过来。
Hive排序一 Order By二 Sort By三 Dirtribute By四 Cluster By一 Order By全局排序,只有一个 reducer,会导致当输入规模较大时,需要较长的计算时间,结果全局有序。使用 ORDER BY 子句排序ASC(ascend): 升序(默认)DESC(descend): 降序ORDER BY 子句在 SELECT 语句的结尾-- 查询员工信息按工资升序排列 hive (default)> select * from emp order