hive 排序与分发的各种By

排序与分发的各种By
与传统关系型数据库最大的区别就是处理数据的能力
这种能力最大的体现就是排序与分发的原理
order by 是全局排序,只有一个reduce,数据量多时速度慢
sort by 是随机分发到一个reduce然后reduce内部排序,一般不会单独使用;,也就是说保证了局部有序(每个reducer出来的数据是有序的,但是不能保证所有的数据是有序的,除非只有一个reducer)
好处是:执行了局部排序之后可以为接下去的全局排序提高不少的效率(其实就是做一次归并排序就可以做到全局排序了)
distribute by 是根据 distribute by 的字段把相应的记录分发到那个reduce

upload successful
cluster by是distribute by + sort by的简写
upload successful

group by是对检索结果的保留行进行单纯分组,一般总爱和聚合函数一块用例如AVG(),COUNT(),max(),main()等一块用。distribute by不可以。

partition by虽然也具有分组功能,但同时也具有其他的功能,一般和窗口函数一起使用。