尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

实用指南:Hive SQL 中 BY 系列关键字全解析:从排序、分发到分组的核心用法

实用指南:Hive SQL 中 BY 系列关键字全解析:从排序、分发到分组的核心用法
📅 发布时间:2026/6/20 4:12:49

实用指南:Hive SQL 中 BY 系列关键字全解析:从排序、分发到分组的核心用法

一、排序与分发相关 BY 关键字

1. ORDER BY:全局统一排序

作用:对查询结果进行全局排序,确保最终结果集完全有序(仅允许单个 Reducer 处理数据)。

语法:

SELECT * FROM table_name ORDER BY column1 [ASC|DESC]; -- ASC 为默认升序

特点:

大数据量时性能较差(单节点压力大),适用于需要绝对有序的场景(如总分排名、全量数据排序)。

2. SORT BY:分区内局部排序

作用:在每个 Reducer 内部对数据排序,不同 Reducer 间结果可能无序。

语法:

SELECT * FROM table_name SORT BY column1 [ASC|DESC];

特点:数据先按分发规则(如 DISTRIBUTE BY)分配到多个 Reducer,再独立排序,性能优于 ORDER BY。

3. DISTRIBUTE BY:数据分发规则指定

作用:定义数据分发到 Reducer 的规则,相同值的记录会被分配到同一个 Reducer。

典型搭配:与 SORT BY 联用,实现 “先分发后排序”(分区内排序)。

语法:

SELECT * FROM table_name DISTRIBUTE BY column1 SORT BY column2 [ASC|DESC];

示例:按 user_id 分发数据到同一 Reducer,再按 log_time 排序:

SELECT * FROM logs DISTRIBUTE BY user_id SORT BY log_time ASC;

4. CLUSTER BY:分发与排序的语法糖

作用:等价于 DISTRIBUTE BY column AND SORT BY column,对同一字段同时进行分发和排序。

语法:

SELECT * FROM table_name CLUSTER BY column;

限制:仅能对单一字段操作,无法对不同字段分别设置分发和排序规则。

二、分组与聚合相关 BY 关键字

5. GROUP BY:数据分组与聚合

作用:按指定字段对数据分组,配合聚合函数(如 SUM、COUNT、AVG) 进行统计计算。

语法:

SELECT group_col, aggregate_func(column)
FROM table_name
GROUP BY group_col;

示例:统计各部门员工人数及平均工资:

SELECT dept_id, COUNT(*) AS emp_count, AVG(salary) AS avg_salary
FROM employees
GROUP BY dept_id;

注意:未在聚合函数中的字段需出现在 GROUP BY 子句中(Hive 3.0+ 支持优化)。

6. PARTITION BY:分区与窗口分组

场景一:Hive 表分区(物理存储)

作用:将数据按字段存储在不同目录(如按日期、地域分区),提升查询效率。

语法:

CREATE TABLE sales_data (order_id INT, amount DECIMAL)
PARTITIONED BY (year STRING, month STRING);

过滤分区字段时可直接定位文件,如 SELECT * FROM sales_data WHERE year='2023'。

场景二:窗口函数(逻辑分组)

作用:在查询结果中按字段分组,不改变行数,用于计算分组内排名、累计值等。

语法:

SELECT *, ROW_NUMBER() OVER (PARTITION BY dept_id ORDER BY salary DESC) AS rank
FROM employees;

说明:按 dept_id 分组,计算每个员工在部门内的工资排名。

三、关键特性对比表

关键字核心功能是否改变数据行数典型场景
ORDER BY全局排序否全量数据排名、总决赛计分
SORT BY分区内排序否日志分区内时间排序
DISTRIBUTE BY数据分发到 Reducer 的规则否配合 SORT BY 实现分区内排序
CLUSTER BY分发 + 排序(同字段)否简单场景下的快速排序分发
GROUP BY分组聚合是(聚合后行数减少)部门统计、类别汇总
PARTITION BY表分区 / 窗口分组否物理存储优化、窗口函数排名

相关新闻

  • 改写自己的浏览器插件工具 myChromeTools - 详解
  • 通过litestream 进行sqlite-vec 数据备份以及恢复
  • 对于路由使用的ref的疑问

最新新闻

  • 2026市面上专业的废弃输送pp防静电管生产商排行 - 品牌排行榜
  • 豆包AI不是智能助手,而是对话式信息接口
  • GLM-5.1深度解析:国产大模型的中文长文本结构化语义建模突破
  • 如何解决3D渲染中球形全景图到立方体贴图转换的技术挑战
  • Python国密SM2签名验签实战:gmssl v3.2.1避坑指南与ID参数详解
  • 2026年评价高的激光切管加工/激光切管厂家精选合集 - 行业平台推荐

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号