Hive-排序方式
Hive-排序方式
order by
会对查询的结果做一次全局排序
所有的数据都会发送到同一个reducer进行处理,不管有多少map,也不管文件有多少block块,只会启动一个reducer,因为多个reducer无法保证全局有序
优点
全局有序
缺点
对大量数据进行排序耗时会比较长
sort by
会根据数据量的大小启动多个reducer进行排序,会保证每个reducer内有序
优点
执行了局部排序之后可以为全局排序提高不少效率
缺点
局部有序,如果只有一个reducer,则效果和order by一样
distribute by
有些情况下,我们需要控制某个特定行应该到哪个reducer,通常是为了进行后续的聚集操作。
distribute by类似MR中partition(自定义分区),进行分区,结合sort by使用
distribute by的分区规则是根据分区字段的hash码与reducer的个数取模,相同的分到一个区
distribute by语句要写在sort by语句之前
cluster by
cluster by是distribute by和sort by的结合