全局排序(order by)
只有一个Reducer,默认升序(ASC),降序为DESC
每个 Reduce 内部排序(sort by)
Sort by 为每个 reducer 产生一个排序文件。每个 Reducer 内部进行排序(Reducer随机分区,区内排序),对全局结果集来说不是排序。
分区(distribute by)
Distribute By: distribute by 子句可以控制某个特定行应该到哪个 reducer,distribute by 类似 MR 中 partition(自定义分区),进行分区,结合 sort by 使用。
distribute by 的分区规则是根据分区字段的 hash 码与 reduce 的个数进行模除后, 余数相同的分到一个区。
Hive 要求 DISTRIBUTE BY 语句要写在 SORT BY 语句之前。
Cluster By
当 distribute by 和 sort by 字段相同时,可以使用 cluster by 方式。
cluster by 除了具有 distribute by 的功能外还兼具 sort by 的功能。但是排序只能是升序 排序,不能指定排序规则为 ASC 或者 DESC。