hive中的几种排序的区别

hive的排序有四种: order by ,sort by,distribute by,cluster by

1、order by

order by 是最常用的一种排序,全局排序,所有的数据会在一个reducer上面进行排序,所以一般使用这个函数进行排序的时候速度较慢。需要指出来的是,在strict模式下,order by 后面是必须加上limit 进行限制的。

 

2、sort by

sort by 是在进去reducer之前进行的排序,并不是全局排序。只能保证在进入同一个reducer里面的数据是有序的。有别于order by ,sort by可以指定reducer的个数,然后再对reducer里面的数据再排序,也可以得到全局的排序结果。

 

3、distribute by

distribute by 一般是配合sort by 使用的。distribute 是控制在map端的数据拆分到那个reducer去进行聚合。在某些情况下,需要控制某行记录大某个reducer上。 

一般两者结合使用的场景如下

小文件很多

map文件大小不均

文件内容很大

reduce接受的文件大小不均

 

4、cluster by

cluster除了具备distribute by的功能之外还具有sort by的功能; 

局限性就是:只能进行倒序排序

你可能感兴趣的:(大数据入门)