Hive中sort by,order by,cluster by,distribute by总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive中sort by,order by,cluster by,distribute by总结相关的知识,希望对你有一定的参考价值。

参考技术A Hive中order by和SQL语言中的order by是一样,它会对查询结果做一次全局排序,那么在Hive中如果使用了order by,所有的数据就都会只会被一个reducer来处理,如果数据量太大的话,就会消耗大量的时间。

这是Hive提供的另一种排序方法,在使用sort by的时候,所有的数据会被多个reducer并行处理,但只有在同一个reducer中的数据才会排序。也就是说sort by是局部排序,每个reducer的最后输出结果都是有序的,但是从全局来看并非有序,除非只有一个reducer来处理数据。
注:对于order by和sort by用户可以指定任意期望的排序字段,并且默认是ACS方式

distribute by 是来控制map的输出如何在reducer中划分。默认情况下,map的输出会根据key计算哈希值,然后按照哈希值将数据均匀的分发到多个reducer中,这也就意味着,多个reducer中含有相同的数据,如果我们希望相同的key都让一个reducer来处理,就可以使用distribute by,如果在和sort by一起使用,那么最后的结果就会变成全局有序。

cluster by 可以理解为一个特殊的distribute by和sort by的结合,当distribute by和sort by后面所跟的列名相同时,就等同于直接使用cluster by 跟上该列名。但是被cluster by指定的列最终的排序结果只能是降序,而且无法指定asc和desc。
注:在使用distribute by和sort by结合以及cluster by时,会剥夺reducer的并行性,但最终的结果是全局有序的。

以上是关于Hive中sort by,order by,cluster by,distribute by总结的主要内容,如果未能解决你的问题,请参考以下文章

hive中order by,sort by, distribute by, cluster by的用法

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

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

Hive之cluster by , distribute by,order by,sort by

hive 中 Order by, Sort by ,Dristribute by,Cluster By 的作用和用法

Hive SORT BY vs ORDER BY vs DISTRIBUTE BY vs CLUSTER BY