hive中order by 、sort by、distribute by、cluster by、group by操作

14 篇文章 0 订阅

order by
对输入做全局排序,因此只有一个reducer,会导致当输入规模较大时,需要较长的计算时间。

SELECT * FROM db_hive.employee ORDER BY empID desc;     //按照empID降序排列

sort by
不是全局排序,其在数据进入reducer前完成排序。因此,如果用sort by进行排序,并且设置mapreduce.job.reduces>1,则sort by只保证每个reducer的输出有序,不保证全局有序。

set mapreduce.job.reduces = 3;   //设置reduce数目
> INSERT [OVERWRITE] LOCAL DIRECTORY '/home/hadoop/hive-exp'
> SELECT * FROM db_hive.employee 
> SORT BY empID asc;        //在本地会生成3个reduce结果文件,每个文件按照empID升序排列

distribute by
类似于MapReduce中分区partation,对数据进行分区,结合sort by进行使用
distribute by控制在map端如何拆分数据给reduce端。hive会根据distribute by后面列,对应reduce的个数进行分发,默认是采用hash算法。

> INSERT [OVERWRITE] LOCAL DIRECTORY '/home/hadoop/hive-exp'
> SELECT * FROM db_hive.employee 
> DISTRIBUTE BY deptNum       //按照部门进行分区
> SORT BY empID asc;        //在本地会根据部门生成结果文件,每个文件按照empID升序排列

cluster by
Cluster by 除了具有distribute by的功能外,还会对该字段进行排序。当distribute by和sort by 字段相同时,可以使用cluster by 代替

group by
是对检索结果的保留行进行单纯分组,一般和聚合函数如AVG()、COUNT()、max()等一块用。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值