当前位置:   article > 正文

hive的排序函数(hive之四by)_hive排序函数

hive排序函数

前言

介绍hive的四种排序函数:Order By,Sort By,Distribute By,Cluster By 简称”四by“

Order By:全局排序

对输入的所有数据做排序,故此只有一个reducer(多个reducer无法保证全局有序);
只有一个reducer,会导致当输入规模较大时,需要较长的计算时间;

1、ORDER BY 子句排序
ASC(ascend): 升序(默认)
DESC(descend): 降序

2、ORDER BY 子句在SELECT语句的结尾

3、示例:
select * from emp order by sal; (默认升序)

select * from emp order by sal DESC; (降序

Sort By:非全局排序,分区内有序

1、在数据进入reducer前完成排序, 它会在数据进入reduce之前为每个reducer都产生一个排序后的文件;

2、当mapred.reduce.tasks > 1时,只能保证每个reducer的输出有序,不保证全局有序

Distribute By:(数据分发)

控制在map端如何拆分数据给reduce端的

1、按照指定的字段对数据进行划分输出到不同的reduce中,通常是为了进行后续的聚集操作;

2、hive会根据distribute by后面列,将数据分发给对应的reducer,默认是采用hash算法+取余数的方式

3、常和sort by一起使用,并且distribute by必须在sort by前面:sort by为每个reduce产生一个排序文件,在有些情况下,需要控制某写特定的行应该到哪个reducer,这通常是为了进行后续的聚集操作。distribute by刚好可以做这件事。因此,distribute by经常和sort by配合使用。

Cluster By

相当于distribute by+sort by,只能默认升序,不能使用倒序。

当分区字段和排序字段相同cluster by可以简化distribute by+sort by 的SQL 写法,也就是说当distribute by和sort by 字段相同时,可以使用cluster by 代替distribute by和sort by。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/558632
推荐阅读
相关标签
  

闽ICP备14008679号