您的位置:首页 > 其它

hive中的几种排序的区别

2018-01-17 20:22 155 查看
整理hive中遇到的几种排序的函数 特性、区别记上一笔

hive的排序

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

order by

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

sort by

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

distribute by

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

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

小文件很多

map文件大小不均

文件内容很大

reduce接受的文件大小不均

cluster by

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

局限性就是:只能进行倒序排序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: