1. order by

Hive中的order by跟传统的sql语言中的order by作用是一样的,会对查询的结果做一次全局排序,所以说,只有hive的sql中制定了order by所有的数据都会到同一个reducer进行处理(不管有多少map,也不管文件有多少的block只会启动一个reducer)。但是对于大量数据这将会消耗很长的时间去执行。
这里跟传统的sql还有一点区别:如果指定了hive.mapred.mode=strict(默认值是nonstrict),这时就必须指定limit来限制输出条数,原因是:所有的数据都会在同一个reducer端进行,数据量大的情况下可能不能出结果,那么在这样的严格模式下,必须指定输出的条数。

2. sort by

Hive中指定了sort by,那么在每个reducer端都会做排序,也就是说保证了局部有序(每个reducer出来的数据是有序的,但是不能保证所有的数据是有序的,除非只有一个reducer),好处是:执行了局部排序之后可以为接下去的全局排序提高不少的效率(其实就是做一次归并排序就可以做到全局排序了)。

3. distribute by和sort by一起使用

ditribute by是控制map的输出在reducer是如何划分的,举个例子,我们有一张表,mid是指这个store所属的商户,money是这个商户的盈利,name是这个store的名字

store:

mid money name
AA 15.0 商店1
AA 20.0 商店2
BB 22.0 商店3
CC 44.0 商店4

执行hive语句:

[delphi] view plaincopy
  1. select mid, money, name from store distribute by mid sort by mid asc, money asc

我们所有的mid相同的数据会被送到同一个reducer去处理,这就是因为指定了distribute by mid,这样的话就可以统计出每个商户中各个商店盈利的排序了(这个肯定是全局有序的,因为相同的商户会放到同一个reducer去处理)。这里需要注意的是distribute by必须要写在sort by之前。

4. cluster by

cluster by的功能就是distribute by和sort by相结合,如下2个语句是等价的:

[sql] view plaincopy
  1. select mid, money, name from store cluster by mid
[sql] view plaincopy
  1. select mid, money, name from store distribute by mid sort by mid

如果需要获得与3中语句一样的效果:

[sql] view plaincopy
  1. select mid, money, name from store cluster by mid sort by money

注意被cluster by指定的列只能是降序,不能指定asc和desc。

转自:http://blog.csdn.net/jthink_/article/details/38903775

转载于:https://www.cnblogs.com/zwgblog/p/6091142.html

hive中order by,sort by, distribute by, cluster by作用以及用法相关推荐

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

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

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

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

  3. Hive中的order by ,sort by ,distribute by , cluster by 区别

    #Hive的本质就是MapReduce #设置reduce个数 set mapreduce.job.reduces=num  //设置num数量的reduce #查看设置reduce个数 set ma ...

  4. hive四种排序Order By , Sort By ,Distribute By ,Cluster By

    前文 Hive的本质是MapReduce,MapReduce中如何排序的?? MapReduce分为几种: 1.全排序order By: 结果只有一个(也就是只有一个分区),所有的数据整体有序. 2. ...

  5. order by,sort by,distribute by,cluster by的区别是什么?

    前言 本文隶属于专栏<1000个问题搞定大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见1000个问题搞定大数据技 ...

  6. hive 中排序order by,sort by,distribute by使用

    前提:hive 中使用的排序有oder by, sort by,distribute By,cluster By 具体使用如下 测试数据: 0: jdbc:hive2://hadoop-03:1000 ...

  7. hive中order by详解

    order by的使用及讲解 1. order by的使用 大家都清楚在hive中order by是用来排序的,使用语法如下 SELECT * FROM tab_name ORDER BY colum ...

  8. html中display有哪些属性值,css中display属性是什么及其各个值的作用和用法

    当你查看别人写的css代码的时候,经常会看到display:block.none.inline.table等,那么在css中display属性到底是什么呢,都可以取什么值,每个值又有什么样的作用,到底 ...

  9. hive中order by、distribute by、sort by和cluster by的区别和联系

    order by order by 会对数据进行全局排序,和oracle和mysql等数据库中的order by 效果一样,它只在一个reduce中进行所以数据量特别大的时候效率非常低.而且当设置 : ...

最新文章

  1. “iloveyou88”比“ilovekale”好猜解的多
  2. hdu 1163 ( 求n^n位根)
  3. Java多线程编程实战指南+设计模式篇pdf
  4. VS2013 生成时复制文件或目录到指定目录
  5. IAR无法goto的解决办法
  6. C#中yield用法
  7. C#.Net工作笔记005---c#中list合并去重_以及单纯合并_值类型list去重
  8. linux ifcfg-33 没有eth0解决方法
  9. WPF框架剖析,从头开始自己写WPF框架
  10. linux检查语法错误的命令,使用CHECKSYNTAX命令检查RMAN脚本是否存在语法错误
  11. matlab gui修改图标,Matlab的GUI中左上角修改为自己想要的图标
  12. 高逼格的console.log(),要不来看下
  13. vtk 的vtkimagereslice实现三视图的显示
  14. html中出现弹窗偏右,打印机打印某些网页时,右边总是打印不全,怎么办
  15. macOS - 手动修改本地app的icon
  16. elasticsearch集群搭建及springboot集成使用
  17. ★ .net应用程序如何表现XP风格?
  18. 下载The7 WordPress多功能网站主题,打造独一无二的网站体验!
  19. Solaris10 hostname 设定
  20. 【报告分享】厨房料理小家电新品类市场洞察(2021)-闻道网络(附下载)

热门文章

  1. C# winform中MouseDoubleClick与DoubleClick的区别
  2. apache-2.4.x 编译安装方法
  3. SELECT 语句与其子句的详解
  4. xilinx生成mcs,下载flash问题解决方法
  5. .NET Core 6.0之读取配置文件
  6. iptables配置-Linux系统安全防火墙
  7. php中年月日用什么参数,PHP中date()日期函数参数整理
  8. dma接收双缓存 stm32_容易被大多数人忽视的STM32串口DMA问题
  9. 使用flask-WTF,Flask-Login,sqlite3实现登录和注册(前端登录和注册页面)
  10. 树上分块 - Successor HDU - 4366