【Hive】Order by、Sort by、Distribute by和Cluster by

1 Order by

Hive中的Order by语句和其他的SQL中定义的一样,其会对查询结果集执行一个全局排序,即会有一个所有的数据都通过一个reducer进行处理的过程。对于大数据集,这个过程可能会消耗太多的时间来执行。

2 Sort by

对于使用Order by进行全局排序的操作,Hive增加了一个可供选择的方式,就是Sort by,其只会在每个reducer中对数据进行排序,即执行一个局部排序的过程,这可以保证在每个reducer的输出数据都是有序的(但并非全局排序),这样可以提高后面进行的全局排序的效率。

3 Distribute by

Distribute by控制map的输出在reducer中是如何划分的,MapReduce job中传输的所有数据都是按照键-值对的方式进行组织的,因此,Hive在将用户的查询语句转换成MapReduce job时,其必须在内部使用这个功能。

默认情况下,MapReduce计算框架会依据map输入的键计算相应的哈希值,然后按照得到的哈希值将键-值对均匀分发到多个reducer中去。不过不幸的是,这也就意味着当使用Sort by时,不同的reducer的输出内容会有明显的重叠,至少对于排列顺序而言是这样的,即使每个reducer的输出的数据都是有序的。

4 Cluster by

是Distribute by和Sort by 的结合。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值