news 2026/7/17 16:11:26

小识hive的排序四兄弟ORDER BY、SORT BY、DISTRIBUTE BY、CLUSTER BY

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
小识hive的排序四兄弟ORDER BY、SORT BY、DISTRIBUTE BY、CLUSTER BY

结合Hive 执行引擎(MapReduce)阶段XX银行 场景,对ORDER BYSORT BYDISTRIBUTE BYCLUSTER BY做一个清晰、准确、可直接用于面试的说明:


一、核心区别总览

语法排序范围执行阶段是否全局有序性能影响
ORDER BY全局排序Reduce 阶段(单个 Reducer✅ 是⚠️ 极差(大数据量慎用)
SORT BY分区内局部排序Reduce 阶段(每个 Reducer 内部)❌ 否✅ 可控
DISTRIBUTE BY控制数据分发到哪个 ReducerMap → Reduce 分区阶段
CLUSTER BY col=DISTRIBUTE BY col+SORT BY col ASCMap + Reduce❌ 局部有序✅ 常用于桶表

二、各语法详解(含执行阶段)

1.ORDER BY
  • 作用:对整个结果集做全局排序。
  • 执行阶段
    → 所有数据被发送到1 个 Reducer,在 Reduce 阶段排序。
  • 风险
    数据量大时,单点瓶颈、OOM、超时(XX银行 XXX 报表严禁使用!)。
  • 示例
    SELECT cust_id, exposure FROM dwd_loan ORDER BY exposure DESC; -- 全局降序
2.SORT BY
  • 作用每个 Reducer 内部排序,不保证全局有序
  • 执行阶段
    → 在多个 Reducer 中并行排序,效率高。
  • 典型用法:配合DISTRIBUTE BY实现“分组内排序”。
  • 示例
    SELECT org_id, cust_id, exposure FROM dwd_loan DISTRIBUTE BY org_id SORT BY exposure DESC; -- 每个机构内,按 exposure 降序
3.DISTRIBUTE BY
  • 作用:控制Map 输出如何分配到 Reducer(类似 Hash Partition)。
  • 执行阶段
    → 在Map 端分区(Partitioner)阶段决定数据去向。
  • 注意不排序!必须搭配SORT BY才有排序效果。
  • 用途
    • 避免数据倾斜(自定义分区);
    • 为后续处理按 Key 分组(如按客户 ID 聚合)。
4.CLUSTER BY col
  • 等价于
    DISTRIBUTE BY col SORT BY col ASC
  • 作用:按col分区 + 每区内升序排序。
  • 适用场景
    • 创建桶表(Bucket Table)时保持数据有序;
    • 需要高效JOINGROUP BY的预处理。
  • 示例
    INSERT OVERWRITE TABLE loan_bucketed CLUSTER BY cust_id SELECT * FROM dwd_loan;

三、XX银行实战建议

场景推荐写法原因
XXXX宽表输出不用任何排序XX报表只关心数值,不要求顺序
客户风险明细导出DISTRIBUTE BY org_id SORT BY risk_score DESC每机构内看高风险客户
创建桶表CLUSTER BY cust_id提升后续 Join/GROUP 效率
禁止ORDER BY exposure单 Reducer 必超时

面试一句话总结:

ORDER BY是全局排序但性能差,禁用SORT BY是 Reducer 内排序,需配合DISTRIBUTE BY实现分组有序;CLUSTER BY则是两者的简写,常用于构建有序桶表。

(望各位潘安、各位子健/各位彦祖、于晏不吝赐教!多多指正!🙏)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/17 8:28:49

AssetStudio完全指南:Unity资源提取与管理的实用教程

AssetStudio完全指南:Unity资源提取与管理的实用教程 【免费下载链接】AssetStudio AssetStudio is a tool for exploring, extracting and exporting assets and assetbundles. 项目地址: https://gitcode.com/gh_mirrors/as/AssetStudio AssetStudio是一款…

作者头像 李华
网站建设 2026/7/15 9:31:21

高级ACL,配置静态NAT,Easy IP,三层交换配置VRRP

高级ACL步骤一:根据协议所用端口进行封堵基本acl 2000~2999 源地址高级acl 3000~3999 源地址、目标地址、协议、端口路由器ip配置:(如果延用之前的图那么此步骤可以跳过)[Huawei]interface GigabitEthernet 0/0/0 //进0口[Huawei-…

作者头像 李华
网站建设 2026/7/16 18:20:15

MobaXterm高效运维全攻略

MobaXterm高效运维实战技术文章大纲核心功能与优势概述多协议支持(SSH、RDP、VNC等)内置X11服务器与图形化远程桌面标签式会话管理与多任务并行处理本地文件编辑与远程文件同步能力环境配置与基础设置便携版与安装版的选择策略自定义默认会话参数&#x…

作者头像 李华
网站建设 2026/7/17 1:40:06

基于SSM的网上花店销售系统【2026最新】

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

作者头像 李华