hive中的几种排序的区别

整理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的功能;
局限性就是:只能进行倒序排序

你可能感兴趣的:(hive)