hive的四个排序方法

hive的四个排序方法

一、 order by

order by 是要对输出的结果进行全局排序,这就意味着只有一个reduce task时才能实现(多个reducer无法保证全局有序)但是当数据量过大的时候,效率就很低,速度会很慢。可以指定升序asc 降序desc
在这里插入图片描述
在这里插入图片描述

二、sort by

sort by 不是全局排序,只保证了每个reduce task中数据按照指定字段和排序方式有序排列,是局部排序。排序列必须出现在select column列表中,reduce task 的数量可以通过 set mapred.reduce.tasks=[num] 来设置,当reducer task数量设置为1时,相当于order by排序
ps:一般不单独使用
在这里插入图片描述

三、distribute by

distribute by 指的是按照指定的字段进行划分,将数据分到不同的输出reduce task中,通常与sort by一起使用,使用时distribute by必须放在前面。数据通过hash算法分到不同的task中。-----先分组再排序
分组个数由reduce个数决定,分组内有序,但是不能保证分组外有序,可以指定升序还是降序

在这里插入图片描述

四、cluster by

cluster by 可以看做是一个特殊的distribute by+sort by,它具备二者的功能,但是只能实现正序排序的方式,不能指定排序方式。
在这里插入图片描述
在这里插入图片描述


版权声明:本文为little_sloth原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。