hive中order by,sort by, distribute by, cluster by作用以及用法

转载自:https://blog.csdn.net/zhanglh046/article/details/78572939?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-2&spm=1001.2101.3001.4242

一 ORDERBY

ORDERBY 跟传统数据库ORDERBY 一样,会对所有的数据进行排序,可能有很多个Map任务,但是只会由一个Reducer来进行排序,如果数据海量的话,会很影响性能,因为需要花费大量的时间

 

二 SORTBY

如果在hive指定了SORT BY语句,那么在每一个Reducer都会进行排序,言外之意,只保证每一个Reducer的时候进行排序,那么这样的排序是局部的,并非全局的排序。类似于桶内排序

这样有一个好处:做了局部排序之后,进行全局排序的时候,能够效率不少。

 

三 DISTRIBUTEBY

根据指定字段,默认对数据进行hash,然后分道不同的Reducer中。

是控制Map的输出在Reducer是如何划分的,也就是控制哪些map输出到哪一个reducer,一般配合SORT BY使用,即按照什么划分reducer,然后进行Reducer级别的排序。有点分桶的意思。

 

SELECTfid,fname,ftime,fregion FROM movie DISTRIBUTE BY fid

SORTBY fid

 

四CLUSTERBY

CLUSTERBY 是DISTRIBUTE BY + SORT BY的综合。但是他的排序只能是倒序,不能指定ASC 或者DESC

比如

SELECTfid,fname,ftime,fregion FROM movie CLUSTER BY fregion;

等价于

SELECTfid,fname,ftime,fregion FROM movie DISTRIBUTE BY fid

SORTBY fid

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值