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

news/2025/10/7 8:52:16/文章来源:https://www.cnblogs.com/lxjshuju/p/19128176

一、排序与分发相关 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表分区 / 窗口分组物理存储优化、窗口函数排名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/930224.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高阶数据结构——并查集 - 详解

高阶数据结构——并查集 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&quo…

网站建设方案范文网站建设详细报价

继续炒股。第一题是买卖股票的最佳时机IIIhttps://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/description/,与上题不同的是,本题要求买卖的次数要限制在2次以内。对上题的dp数组,显然要增加它的状态以适应题目要求。对于遍历…

经过基于流视频预测的可泛化双手运行基础策略

经过基于流视频预测的可泛化双手运行基础策略pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &qu…

公司网站打不开微博+wordpress

1. 不说负能量的话,会引发自己的负能量 在日常生活中,我们的语言不仅能够影响他人,更能影响我们自己。负能量的话语,如抱怨、批评或消极的自我对话,会潜移默化地影响我们的心态和情绪。为了维持积极的心态&#xff0c…

进程——环境变量及软件地址空间

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

软件开发与网站开发的区别网站落地页如何做

/*java中的集合类 实现了 Connection接口ArrayList这个集合类 java.util.*这个包的类toArray()方法可以返回一个 Object类型的对象数组我们部队 ArratList进行泛型规范那么就会警告 但是还是可以运行的这是因为JDK1.5中引进了泛型,但是你的ArrayList却没有采用&a…

高唐做网站建设的公司小皮怎么创建网站

目录 题目答案运行结果 题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组…

自己可做以做网站吗天元建设集团有限公司商票兑付情况

520这一天,也是网络情人节。就在那天,如果没有女朋友的自己,如何假装自己是有朋友的!如何在朋友圈“秀恩爱。女生版:image很有感觉有木有~~男生版:imageimage其实这些都是小意思啦~~这些都是假装自己有女朋…

【HarmonyOS 5】鸿蒙Taro跨端框架 - 教程

【HarmonyOS 5】鸿蒙Taro跨端框架 - 教程2025-10-07 08:31 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block…

遵义祥云平台网站建设中国企业500强排名2021

《童年》是高尔基自传体小说三部曲中的第一部,讲述的是高尔基幼年丧父、母亲改嫁,他跟随日渐破落的小染坊主外公以及外婆生活的童年经历。小说通过一个儿童天真无邪的眼光,向读者生动地展示了19世纪中叶俄罗斯社会底层人民的生活状态&#xf…

学习unigui【37】nginx的反向代理 ,程序中的重新定向

学习unigui【37】nginx的反向代理 ,程序中的重新定向默认port:9077 希望IP:81后访问9077。于是就采用nginx。问题当点击下载文件或浏览文件等时,怎么知道用户是通过81口访问的? UniGUI 没有暴露 RequestHeader(s),…

php空间放多个网站做好的网站如何上线

如果聊起国内的智能机市场,我想大多数人的印象就是疯狂内卷。卷影像、卷屏幕、卷快充、卷性能……客观地说,国内的3C产品还是很有质价比的。不过在没有如此内卷的日本市场,各种小屏手机仍旧是主流。 除了苹果外,日本本土品牌的夏普…

我和宠物做朋友教案小精灵网站iis怎么使用来建设一个网站

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究) 开头先分享个有趣的哈哈哈 承包了我一天的快乐秧 点击此处…

wordpress建的大型网站吗云适配 网站

刷题 309.最佳买卖股票时机含冷冻期 题目链接 | 文章讲解 | 视频讲解 题目:给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多…

wordpress手机网站个人网站建设收费标准

一、前言 前面有相关系列文章介绍了ES的基本概念和各种版本SDK的使用,ES现在已升级到8.5版本,有些概念和SDK用法都有很大变化,后续ES相关的文章会以8.3版本为基准介绍一些实际中应用需要掌握的概念以及一些比较实际的例子。 二、映射 ES环…

北京SEO网站优化公司郑州网站推广公司

给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum 22 输出&a…

单页面推广网站模版汉语网站建设心得

JL-8集成电路电流继电器 系列型号 JL-8A/11集成电路电流继电器;JL-8B/11集成电路电流继电器; JL-8A/12集成电路电流继电器;JL-8B/12集成电路电流继电器; JL-8A/13集成电路电流继电器;JL-8B/13集成电路电流继电器; JL-8A/21集成电路电流继电器;JL-8B/21集成电路电流继电器; JL-…

关于网站开发的商业计划书四川省建设厅注册中心网站

这是第三部分&#xff08;第一&#xff0c;第二部分&#xff09;&#xff0c;非常有意思的问答&#xff0c;值得仔细琢磨。 这里只是一些和程序员发展&#xff0c;面试&#xff0c;优秀程序员的特点等相关的部分。 有些想法和 MSF 中的原则也很相似 &#xff08;见 <移山之…

解决Docker存储空间不足问题 - 指南

解决Docker存储空间不足问题 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco…

长沙市做网站的网站图标在哪里做修改

背景 有序列表换行后自动开启下一个标号&#xff0c;让人苦恼。 操作 操作系统换行操作 1. 【Enter】键是硬回车&#xff0c;即段落标记。回车后文字属于下一段落 2. 【shiftEnter】是软回车快捷键。即人工换行符。回车后文字仍属于前一段落&#xff0c;只不过重新换行。 …