order by

(1):order by后面可以有多列进行排序,默认按字典排序
(2):order by为全局排序
(3):order by需要reduce操作,且只有一个reduce,无法配置(因为多个reduce无法完成全局排序)

select * from emp order by ename;
select * from emp order by ename,sal;

如果在严格模式下用order by不加limit会报错,如下

set hive.mapred.mode=strict;
select * from emp order by ename,sal;

报错

org.apache.hadoop.hive.ql.parse.SemanticException:1:27 Order by-s without limit are disabled for safety reasons.
If you know what you are doing,please make sure that hive.strict.checks.large.query is set to false and that hive.mapred.mode is not set to 'strict' to enable them.. Error encountered near token 'sal'

因为执行order by的时候只能启动单个reduce,如果排序的结果集过大,那么执行时间会非常漫长。
加上限制就ok

select * from emp order by ename,sal limit 4;

order by即使设置了reducer的数量,也是无用的,总是一个,如下验证

hive> set mapreduce.job.reduces=3;
hive> select * from emp order by ename;
Query ID = root_20201228190740_b85f0a99-b190-4104-add9-eda6522b7291
Total jobs = 1
Launching Job 1 out of 1
Number of reduce tasks determined at compile time: 1
Job running in-process (local Hadoop)
2020-12-28 19:08:00,389 Stage-1 map = 0%,  reduce = 0%
2020-12-28 19:08:01,610 Stage-1 map = 100%,  reduce = 0%
2020-12-28 19:08:02,646 Stage-1 map = 100%,  reduce = 100%
Ended Job = job_local1798367809_0001
MapReduce Jobs Launched:
Stage-Stage-1:  HDFS Read: 388 HDFS Write: 331 SUCCESS
Total MapReduce CPU Time Spent: 0 msec

sort by

sort by是可以指定reduce数量的,不像order by总是只有一个reduce,

hive> set mapreduce.job.reduces=2;
hive> select * from emp sort by ename;
Query ID = root_20201228185827_cffaf7cc-2df9-49a7-9424-cdbeb44c5192
Total jobs = 1
Launching Job 1 out of 1
Number of reduce tasks not specified. Defaulting to jobconf value of: 2

但是结果只是每个reducer内有序,比如上面的运行结果是,可以看到结果并不是全局有序

7566    JONES   MANAGER 7839    1981-04-02      2975.0  NULL    10
7369    SMITH   CLERK   7902    1980-12-17      800.0   NULL    20
7521    WARD    SALESMAN        7698    1981-02-22      1250.0  500.0   30
7499    ALLEN   SALESMAN        7698    1981-02-20      1600.0  300.0   30

如果需要全局排序,就不能用sort by,
sort by一般和distribute by搭配使用,这样每个分组内有序.

总结

  • 全部排序用order by
  • order by总是只有一个reducer,所以如果数据量过大,要搭配limit使用
  • reducer的数量影响运行速度!

Hive 排序入门--order by与sort by相关推荐

  1. hive排序:distribute by 、sort by 、cluster by 、order by 区别

    hive排序:distribute by .sort by .cluster by .order by 区别 1). order by 只有一个reduce负责对所有的数据进行排序,若大数据量,则需要 ...

  2. hive中的order by、sort by、distribute by、cluster by排序

    hive中的排序 说明:hive中有四种全局排序:order by.内部排序:sort by.分区排序:distribute by.组合排序:cluster by. order by(全局排序) 说明 ...

  3. HOL中的四种排序,Order By、Sort By、Distribute By、Cluster By

    1.全局排序(Order By) Order By:全局排序,一个Reducer 1.使用 ORDER BY 子句排序 ASC(ascend): 升序(默认) DESC(descend): 降序 2. ...

  4. mysql distribute by_Hive学习(八) 排序:order by、sort by、distribute by、cluster by

    hive中有四种排序: 1.全局排序:order by 2.内部排序:sort by 3.分区排序:distribute by 4.组合排序:cluster by 全局排序:order by 说明:全 ...

  5. Hive sql 中 order by、sort by、distribute by、cluster by用法

    名词解释: 名词解释: order by Hive中的order by和数据库中的order by 功能一致,按照某一项或者几项排序输出,可以指定是升序或者是降序排序.它保证全局有序,但是进行orde ...

  6. 一篇文章彻底掌握 hive 中的 ORDER/SORT/CLUSTER/DISTRIBUTE BY 和 BUCKET 桶表

    大家好,我是明哥! 本片文章,我们来总结下,HIVE 中的 order/sort/cluster/distribute by 和 BUCKET 桶表 1 ORDER BY ORDER BY 会对 SQ ...

  7. Hive中ORDER BY、SORT BY和DISTRIBUTE BY

    ORDERBY ORDERBY在Hive中的作用同标准SQL中一样,对结果集进行整体排序,ORDER BY 会对结果集进行一个全局排序,所有数据将被放在一个reducer当中处理. 当结果数据量大时, ...

  8. 【hive】order by、sort by、distribute by、cluster by的区别

    Order By(全局排序) Order By 用于结果集的排序.也可以称之为全局排序.对于 MR 任务来说,如果我们使用了 Order By 排序,意味着MR 任务只会有一个 Reducer 参与排 ...

  9. hive 中 order by、sort by、distribute by 、cluster by 区别

    1. select 语法 Hive 中的 SELECT 基础语法和标准SQL语法基本一致,支持 WHERE.DISTINCT.GROUP BY.ORDER BY.HAVING.LIMIT.子查询等.语 ...

最新文章

  1. Java Web整合开发读书笔记
  2. js带开关的时钟_昌利JS系列混凝土搅拌机衬板配件
  3. android tcp 最优窗口,Android 面试必备 - 计算机网络基本知识(TCP,UDP,Http,https)...
  4. C++语言基础 —— STL —— 容器与迭代器 —— list 与 deque
  5. 继承性(HTML、CSS)
  6. ASP.NET MVC 对于视图引擎的优化
  7. MTRR内存类型范围寄存器
  8. 用c 语言写21点游戏,求一c语言程序 :21点游戏代码
  9. MySql 数据类型 - 整型
  10. 02.STM32开发板资源介绍与驱动
  11. 数据库课程设计——员工培训管理系统
  12. 16进制颜色代码转RGB代码
  13. esp32 camera_ESP32操作L298N以及示例程序说明
  14. 怎么同时给多个 Word 文档批量添加自定义的文字和图片水印
  15. ITIL事件管理流程关键知识
  16. 如何解决“Cannot be opened because the developer cannot be verified”
  17. 如何通过拍照识别植物?试试这几个软件
  18. 快递物流信息复打接口API代码-快递100
  19. 51nod-【1278 相离的圆】
  20. ios html加载css样式,iOS加载HTML, CSS代码

热门文章

  1. nginx日志打印header_小水敲黑板--Nginx+Keepalived实现负载均衡和高可用
  2. 美国西北大学 计算机工程专业排名,权威首发!2018年USNews美国大学研究生计算机工程专业排名榜单...
  3. python量化回测框架_股票量化交易回测框架pyalgotrade源码阅读(一)
  4. Android Studio实现音乐播放器2.0
  5. fit函数 model_函数式 API
  6. 通用 字符串工具类
  7. linux系统支持什么格式的软件吗,UOS系统支持什么样的软件包格式:其实Deb,Rpm,Tar.gz源码包都行...
  8. mysql 一行转多多行_JS 小工具 MYSQL WHERE IN条件 去掉换行符(列转行)
  9. python批量音频转格式_GitHub - shede333/SWConvertVideoToAudio: Python批量转换 视频 为 音频MP3(即提取音频文件)...
  10. camera驱动电源配置_电源行业发展前景如何?