hive四种排序区别及使用(order by、sort by、distribute by 、cluster by)

order by

全局性排序,不管设置多少reduce task,只会启动1个reduce task进行排序,因此当输入规模较大时,需要较长的计算时间
当设置set mapred.reduce.tasks=2时,执行order by 排序语句,只显示一个reduce
在这里插入图片描述

sort by

根据reduce task数量,对每个reducer中的数据进行排序,只能保证局部有序。对全局结果集来说不是排序。
注意:
①当reducer task数量设置为1时,相当于order by排序
②排序列必须出现在select column列表中

distribute by

根据字段进行分区,默认分区为字段的哈希值取模
注意:distribute by只根据字段分区,并不对字段进行排序,因此常与sort by一起使用,保证分区内有序
在这里插入图片描述

cluster by

相当于 distribute by+order by
当distribute by和order by 字段一致时,可以使用cluster by
注意:
①只能升序排序,不支持ASC|DESC
②排序列必须出现在SELECT column列表中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值