Hive四种排序方式

Blog Author · 1 分钟 阅读时间
发布于 2025年12月10日

order by

用于对查询结果及执行一个全局排序。因此只有一个reducer。当输入较大时,需要较长的计算时间。

在严格模式下必须使用limit限定条件,因为如果数据量特别大的话会出现无法输出结果的情况,如果进行limit显示,那么只处理(n* map number)条记录。


    set hive.mapred.mode = nonstrict;   // 设置非严格模式,默认情况下就是非严格模式
set hive.mapred.mode = strict ;     // 设置为严格模式

  

sort by

非全局排序。只会在每个reducer中对数据进行排序,执行一个局部排序过程。这可以保证每个reducer的输出数据都是有序的,但是并非全局有序。这样可以提高后面进行的全局排序的效率。

sort by是不受严格模式影响。

distribute by

distribute by控制map的输出在reducer中是如何划分的。 MapReduce job中传输的所有数据都是按照key/value对的形式进行组织的,因此Hive在将用户的查询语句转换成MapReduce job的时候,其必须在内部使用这个功能。

MapReduce计算框架会依据map输入的键计算相应的hash值,然后按照得到的hash值将内容分发到多个reduce中去,不过当使用sort by时,不同的reducer的输出会有明显的重叠,至少对于拍了顺序二呀是这样的,即使每个reducer的输出的数据都是有序的。

cluster by

cluster by除了具备distribute by的功能之外,还具有sort by的功能。 但是cluster by只能进行倒叙排序。

Share: