hive中的四种排序类型

1、Order by 全局排序

ASC(ascend): 升序(默认)
DESC(descend): 降序

**注意 :**只有一个 Reducer,即使我们在设置set reducer的数量为多个,但是在执行了order by语句之后,当前此次的运算还是只有1个reducer,因为order by要做的是全局分区。(开窗函数内是分区内排序,不在此问题)

验证:

sql 复制代码
set mapreduce.job.reduces=3;
select * from stu_scores order by math;

**总结:**order by 语句的运行效率较低,一般要配合limit 使用。

2、Sort By 在每一个Reduce的job中进行排序

设置reduce 的job数为3

sql 复制代码
set mapreduce.job.reduces=3;

查看设置的reduce 的job数量

sql 复制代码
set mapreduce.job.reduces

测试sort by:

sql 复制代码
select * from stu_scores sort by math;

**备注:**在3个reduce job中分别进行排序。

3、Distribute By 分区(结合 sort by 使用)

有些场景我们需要控制某些特定行应该到同一reducer,做一些聚集操作。

distribute by 类似 MR 中 partition(自定义分区),进行分区,结合 sort by 使用。

设置reduce 的job数为3

sql 复制代码
set mapreduce.job.reduces=3;

查看设置的reduce 的job数量

sql 复制代码
set mapreduce.job.reduces

测试 distribute by....sort by

按照stu_id分区,分区内使用math排序

sql 复制代码
select * from stu_scores distribute by stu_id sort by math;

分区逻辑:根据distribute by 后的字段hash码与reduce 的个数进行模数后,决定分区路由。

4、cluster by

当 distribute by 和 sort by 字段相同时,可以使用 cluster by 方式。但是排序只能是升序排序,不能指定排序规则为 ASC 或者 DESC。

sql 复制代码
select * from stu_scores cluster by math;
select * from stu_scores distribute by math sort by math;

总结: cluster by 等价于distribute by 和 sort by 字段的升序排序。

相关推荐
笨蛋少年派5 小时前
数据仓库系统建设:数据采集、预处理与集成
数据仓库
qq 8762239657 小时前
基于Matlab/simulink的双电机建模驱动控制仿真模型:探索纯电与混动汽车世界
数据仓库
伟大的车尔尼9 小时前
双指针题目:两个数组的交集
排序·双指针·哈希表
番茄撒旦在上16 小时前
Hive数仓分层——国内大数据就业洞察
大数据·数据仓库·hive
yumgpkpm16 小时前
hadoop集群搭建 (超详细) 接入Impala、Hive,AI 大模型的数据底座
hive·hadoop·mysql·zookeeper·flink·kafka·hbase
励志成为糕手16 小时前
MapReduce工作流程:从MapTask到Yarn机制深度解析
大数据·hadoop·分布式·mapreduce·yarn
编织幻境的妖17 小时前
Hadoop核心组件及其作用概述
大数据·hadoop·分布式
梦里不知身是客112 天前
hive中metastore 服务的意义
数据仓库·hive·hadoop
计算机毕业编程指导师2 天前
【Python大数据选题】基于Spark+Django的电影评分人气数据可视化分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·spark·django·电影评分人气
梦里不知身是客112 天前
hiveserver2服务的作用和启动
hive