在Hive中,ORDER BY语句是对查询结果集进行整体的排序,最终将会产生一个reducer进行全局的排序,达到的最终结果是和传统的关系型数据库是一样的。

在数据量非常大的时候,全局排序的单个reducer将会成为性能瓶颈,有可能由于数据量过大而跑不出来结果。

Hive中可以设置hive.mapred.mode为strict严格模式,这时候,Hive要求用户必须对order by语句加上limit 条数限制,防止排序数据集过大导致性能瓶颈。

在这里我不提sort by ,distribute by的用法,下一节好好分析下这几个语句的用法。我主要讲下Hive的order by 与oracle 的order by的不同点。

同样是一个emp雇员表。我希望执行如下查询:

SELECT empno,ename,job,sal FROM emp order by deptno;

这个语句中,order by排序引用的列在不是select查询的列,在大多数的关系型数据库中执行是没有问题的,但是在Hive中执行就会出问题,效果如下:

在Oracle sqlplus中执行效果如下:

在Hive中执行却报错:

在HIVE中,order by语句只能引用select查询的列,这一点我觉得是有待改进的地方。

我在查询列表中加上deptno后,才能正常执行,这一点大家在写Hive SQL的时候需要注意,或许后续版本会对这个bug进行改进,我当前用的是Hive 2.3.3版本。

排序列如果来自于select 后的选择列的时候就不会报错,如下:

select deptno,empno,ename,job,salary from emp order by deptno;

最新文章

  1. 第20讲 HOOK和数据库编程
  2. android 学习运用海马模拟器教程与android环境的搭建
  3. Apache Spark源码走读之14 -- Graphx实现剖析
  4. angular 和jq 的AJAX的请求区别
  5. Delphi对象变成Windows控件的前世今生(关键是设置句柄和回调函数)goodx
  6. 【LeetCode】38 - Count and Say
  7. iOS项目架构文档
  8. JS 浏览器检测
  9. MySQL删除单列重复或多列同时重复值并保留一条
  10. 数据结构与算法系列研究五——树、二叉树、三叉树、平衡排序二叉树AVL
  11. UILabel 的使用
  12. [android] 自定义广播事件
  13. 开源流媒体服务器SRS学习笔记(4) - Cluster集群方案
  14. Docker跨主机link
  15. JavaScript中的关于this
  16. ApplicationListener<ContextRefreshedEvent>接口,Spring启动后获取所有拥有特定注解的Bean
  17. [No0000167]CPU内部组成结构及指令执行过程
  18. SQL Server 配置管理器
  19. Django--django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE
  20. Postgresql 字符串操作函数

热门文章

  1. 好的java资源地址
  2. vue.js学习系列-第二篇
  3. 基于Python的Webservice开发(一)-简介
  4. gitlab 随笔
  5. 【easy】141. Linked List Cycle
  6. pytorch查看CUDA支持情况,只需要三行代码,另附Cuda runtime error (48) : no kernel image is available for execution处理办法
  7. 【Flask】Flask学习笔记(一) 应用基本结构
  8. Linux 用户组
  9. 小米众筹新品---8H凉感慢回弹记忆绵枕 99元 上手开箱图
  10. centos7手把手教你搭建zabbix监控