Order By

Order By 会对输入做全局的排序,所以只会有一个reduce,这样的话在大量数据面前查询效率较低,费时较长

select * from salary order by salary desc;
//desc 升序    asc降序结果:
+--------------+----------------+----------------+
| salary.name  | salary.depart  | salary.salary  |
+--------------+----------------+----------------+
| yanyan       | 2              | 12000          |
| xiaolong     | 2              | 8000           |
| john         | 2              | 8000           |
| qianba       | 1              | 8000           |
| zhaowu       | 2              | 7000           |
| xmith        | 2              | 5000           |
| lilei        | 2              | 5000           |
| zhaoliu      | 1              | 4000           |
| wangwu       | 1              | 4000           |
| lisi         | 1              | 4000           |
| zhangsan     | 1              | 3000           |
+--------------+----------------+----------------+

Sort By

Sort By不是全局的排序,它在进入reduce阶段之前就已经排序。

使用Sort by 可以设定reduce的数量

set mapred.reduce.tasks=2; //启动两个reduce

设置过后,然后使用sort by  执行一条查询  你会发现hiveserver2中的reduce信息如下:reduce启动了两个

2018-09-03 22:28:57,698 Stage-1 map = 0%,  reduce = 0%
2018-09-03 22:29:07,527 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 1.69 sec
2018-09-03 22:29:23,086 Stage-1 map = 100%,  reduce = 100%, Cumulative CPU 6.07 sec
MapReduce Total cumulative CPU time: 6 seconds 70 msec
Ended Job = job_1535982778257_0006
MapReduce Jobs Launched:
Stage-Stage-1: Map: 1  Reduce: 2   Cumulative CPU: 6.07 sec   HDFS Read: 11241 HDFS Write: 460 SUCCESS
Total MapReduce CPU Time Spent: 6 seconds 70 msec

distribute by

distribute by通过计算一个列的值进行分区,有几个分区 sory by 就执行几次,也就会有多少个reduce

select * from salary distribute by depart sort by salary asc;//我们通过 distribute by 对列计算值分区,然后查询排序结果:+--------------+----------------+----------------+
| salary.name  | salary.depart  | salary.salary  |
+--------------+----------------+----------------+
| xmith        | 2              | 5000           |
| lilei        | 2              | 5000           |
| zhaowu       | 2              | 7000           |
| xiaolong     | 2              | 8000           |
| john         | 2              | 8000           |
| yanyan       | 2              | 12000          |
| zhangsan     | 1              | 3000           |
| zhaoliu      | 1              | 4000           |
| wangwu       | 1              | 4000           |
| lisi         | 1              | 4000           |
| qianba       | 1              | 8000           |
+--------------+----------------+----------------+

CLUSTER BY //聚集

cluster by就是distribute by+sort by的组合,但是只能默认升序,不支持自定义升序排序

select * from salary cluster by salary;结果:+--------------+----------------+----------------+
| salary.name  | salary.depart  | salary.salary  |
+--------------+----------------+----------------+
| zhangsan     | 1              | 3000           |
| zhaoliu      | 1              | 4000           |
| wangwu       | 1              | 4000           |
| lisi         | 1              | 4000           |
| xmith        | 2              | 5000           |
| lilei        | 2              | 5000           |
| zhaowu       | 2              | 7000           |
| xiaolong     | 2              | 8000           |
| john         | 2              | 8000           |
| qianba       | 1              | 8000           |
| yanyan       | 2              | 12000          |
+--------------+----------------+----------------+

Hive中的几种排序方式相关推荐

  1. Hive中的四种排序方式(order by,sort by,distribute by,cluster by)使用与区别详解

    在平时的Hive数仓开发工作中经常会用到排序,而Hive中支持的排序方式有四种,这里结合具体的案例详细介绍一下他们的使用与区别: order by sort by distribute by clus ...

  2. mysql中两次排序_MySQL中的两种排序方式: index和filesort

    index :通过有序索引顺序扫描直接返回有序数据,不需要额外的排序,操作效率较高. filesort:通过对返回数据进行排序,filesort 并不代表通过磁盘文件排序,而是说明进行了一个排序操作, ...

  3. Hive中的四种排序

    一.Order by order by会对输入的数据做全局排序,因此只有一个reducer,多个reducer无法保证全局有序.只有一个reducer的弊端在于当输入的数据量较大时,需要较长的计算时间 ...

  4. javaScript中的几种排序方式

    2019独角兽企业重金招聘Python工程师标准>>> 冒泡排序 function bubble(arr){for(var i=0;i<arr.length-1;i++){va ...

  5. java7代码示例_Java中的七种排序方式代码示例

    packagebaseJava;/*** @title SortMethods.java *@authorDonsenChen * @Date 2018年5月2日 上午10:16:03 * @Desc ...

  6. 061 hive中的三种join与数据倾斜

    一:hive中的三种join 1.map join 应用场景:小表join大表 一:设置mapjoin的方式: )如果有一张表是小表,小表将自动执行map join. 默认是true. <pro ...

  7. 4种排序方式比较:order by, sort by, distribute by, cluster by

    文章记录了4种排序方式:order by, sort by, distribute by, cluster by 总结: order by 全局排序,只有一个 Reducer,通过order对字段进行 ...

  8. Java两种排序方式快慢比较

    2019独角兽企业重金招聘Python工程师标准>>> Java中List的排序方式有两种,现在我们测试下这两种排序方式的快慢吧,我们需要用到两个类, 一个是运行程序的Main类,另 ...

  9. hive安装测试及Hive 元数据的三种存储方式

    一  hive安装测试 1.下载解压 tar -xf hive-x.y.z.tar.gz(本次安装为hive-0.8.1.tar.gz) 将解压后的hive-0.8.1文件放在系统的/home/had ...

最新文章

  1. Unity的三种Interceptor
  2. JSON.stringify()中文乱码
  3. vue工程打包上线样式错乱问题 - bug解决(4种)
  4. odoo pivot中去掉求和_JDK 7 中的 Fork/Join 模式
  5. 如何处理Win10电脑黑屏后出现代码0xc0000225的错误?
  6. java+单例懒加载_swift 进阶:懒加载 单例
  7. 使用ffmpeg步骤
  8. Ubuntu16.04中好用的软件(持续更新)
  9. Latex自定义图表序号
  10. mobaXterm中delete键显示^?
  11. Android 渠道游戏 - 聚合SDK
  12. 体育赛事系统设计方案
  13. 并发编程——Forkjoin设计模式原理
  14. (HIIT)高强度间歇训练
  15. java毕业设计学科竞赛管理系统Mybatis+系统+数据库+调试部署
  16. php distinct 用法,distinct的用法
  17. 2021年安全员-A证考试内容及安全员-A证模拟考试
  18. python扫雷_python做扫雷
  19. 无线串口模块通信技术参数快速选型指南
  20. 微信加菲猫连接服务器失败,一个加菲猫猫奴的哭诉,养加菲猫可能是我这辈子做过最错误的决定...

热门文章

  1. yocto平台初步提交uboot patch
  2. [转载] 如何规划好自己的读博生涯
  3. python拍照搜题_Python数据分析实践,中国大学MOOC(慕课)答案公众号搜题
  4. 如何刻linux系统光盘,如何在linux下进行刻录光盘
  5. Matlab将图片背景修改为深色
  6. 笔记本电脑插入耳机不能自动切换播放设备,小键盘不能自动打开,蓝屏问题记录
  7. 从Vimeo获取img缩略图?
  8. 小白,想入门程序员,应该从什么开始学,顺序是什么?
  9. 常数和基本初等函数导数公式推导
  10. 学习笔记---Winform的东东忘了好些。。。