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表分區 / 窗口分組物理存儲優化、窗口函數排名

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/82424.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/82424.shtml
英文地址,請注明出處:http://en.pswp.cn/web/82424.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

網絡爬蟲 - App爬蟲及代理的使用(十一)

App爬蟲及代理的使用 一、App抓包1. App爬蟲原理2. reqable的安裝與配置1. reqable安裝教程2. reqable的配置3. 模擬器的安裝與配置1. 夜神模擬器的安裝2. 夜神模擬器的配置4. 內聯調試及注意事項1. 軟件啟動順序2. 開啟抓包功能3. reqable面板功能4. 夜神模擬器設置項5. 注意事…

【25.06】FISCOBCOS使用caliper自定義測試 通過webase 單機四節點 helloworld等進行測試

前置條件 安裝一個Ubuntu20+的鏡像 基礎環境安裝 Git cURL vim jq sudo apt install -y git curl vim jq Docker和Docker-compose 這個命令會自動安裝docker sudo apt install docker-compose sudo chmod +x /usr/bin/docker-compose docker versiondocker-compose vers…

【基礎】Unity中Camera組件知識點

一、投影模式 (Projection) 1. 透視模式 (Perspective) 原理:模擬人眼,近大遠小(錐形體視錐) 核心參數: Field of View (FOV):垂直視場角 典型值:第一人稱 60-90,駕駛艙 30-45 特…

PCA(K-L變換)人臉識別(python實現)

數據集分析 ORL數據集, 總共40個人,每個人拍攝10張人臉照片 照片格式為灰度圖像,尺寸112 * 92 特點: 圖像質量高,無需灰度運算、去噪等預處理 人臉已經位于圖像正中央,但部分圖像角度傾斜(可…

【Git】View Submitted Updates——diff、show、log

在 Git 中查看更新的內容(即工作區、暫存區或提交之間的差異)是日常開發中的常見操作。以下是常用的命令和場景說明: 文章目錄 1、查看工作區與暫存區的差異2、查看提交歷史中的差異3、查看工作區與最新提交的差異4、查看兩個提交之間的差異5…

deepseek原理和項目實戰筆記2 -- deepseek核心架構

混合專家(MoE) ??混合專家(Mixture of Experts, MoE)?? 是一種機器學習模型架構,其核心思想是通過組合多個“專家”子模型(通常為小型神經網絡)來處理不同輸入,從而提高模型的容…

GPU層次結構(Nvidia和Apple M芯片,從硬件到pytorch)

這里寫目錄標題 0、驅動pytorch環境安裝驗證1.window環境2.Mac Apple M芯片環境 1、Nvidia顯卡驅動、CUDA、cuDNN關系匯總1**1. Nvidia顯卡驅動(Graphics Driver)****2. CUDA(Compute Unified Device Architecture)****3. cuDNN&a…

OpenWrt 搭建 samba 服務器的方法并解決 Windows 不允許訪問匿名服務器(0x80004005的錯誤)的方法

文章目錄 一、安裝所需要的軟件二、配置自動掛載三、配置 Samba 服務器四、配置 Samba 訪問用戶和密碼(可選)新建 Samba 專門的用戶添加無密碼的 Samba 賬戶使用root賬戶 五、解決 Windows 無法匿名訪問Samba方案一 配置無密碼的Samba賬戶并啟用匿名訪問…

CentOS 7鏡像源替換

更換為阿里云鏡像源(適用于 CentOS 7) 1、備份原來的 repo 文件: mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2、下載阿里云的 CentOS 7 repo 文件: curl -o /etc/yum.repos.d/CentOS-Base…

功能結構整理

C# Sxer Sxer.Base:基礎子功能 Sxer.Base.Debug:打印 Sxer.Utility:工具類 Sxer.CustomFunction:獨立功能點開發 Unity

云計算Linux Rocky day02(安裝Linux系統、設備表示方式、Linux基本操作)

云計算Linux Rocky day02(安裝Linux系統、設備表示方式、Linux基本操作) 目錄 云計算Linux Rocky day02(安裝Linux系統、設備表示方式、Linux基本操作)1、虛擬機VMware安裝Rocky2、Linux命令行3、Linux Rocky修改字體大小和背景顏…

【論文閱讀】《PEACE: Empowering Geologic Map Holistic Understanding with MLLMs》

目錄 前言一、研究背景與問題1-1、地質圖的重要性1-2、現有MLLMs的不足 二、 主要貢獻2-1、GeoMap-Bench:首個地質圖理解評估基準2-2、GeoMap-Agent:首個地質圖專用AI代理2-3、實驗驗證與性能優勢 三、關鍵技術3-1、 數據構建與預處理3-2、分層信息提取&…

計算機網絡通信技術與協議(八)----關于IS-IS的基礎概念

關于IS-IS最早是ISO為CLNP(Connectionless Network Protocol,無連接網絡協議)而設計的一種動態路由協議。 目錄 這里提到了CLNP這個概念,在這里解釋一下: CLNS由以下三個協議構成: 那么為什…

網絡原理1

協議 在網絡通信中,協議是非常重要的概念。協議是在網絡通信過程中的約定。發送方和接收方需要提前商量好數據的格式,才能確保正確進行溝通。 應用層協議 應用層,對應著應用程序,是跟我們程序員打交道最多的一層。調用操作系統…

【運維】統信UOS操作系統aarch64自制OpenSSH 9.6p1 rpm包(含ssh-copy-id命令)修復漏洞

為修復如下OpenSSH漏洞,openssh從8.2升級至9.6,然而并未找到統信9.6的rpm源,所以自己動手制作,折騰了一天,在此記錄一下 準備工作 檢查版本 cat /etc/os-releaseuname -a如圖當前環境為aarch64架構,在其…

CI/CD 持續集成、持續交付、持續部署

CI/CD 是 持續集成(Continuous Integration) 和 持續交付/持續部署(Continuous Delivery/Deployment) 的縮寫,代表現代軟件開發中通過自動化流程快速、可靠地構建、測試和發布代碼的實踐。其核心目標是 減少人工干預、…

Spring Boot 應用中實現配置文件敏感信息加密解密方案

Spring Boot 應用中實現配置文件敏感信息加密解密方案 背景與挑戰 🚩一、設計目標 🎯二、整體啟動流程 🔄三、方案實現詳解 ??3.1 配置解密入口:EnvironmentPostProcessor3.2 通用解密工具類:EncryptionTool 四、快速…

OpenCV CUDA模塊特征檢測------角點檢測的接口createMinEigenValCorner()

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 該函數創建一個 基于最小特征值(Minimum Eigenvalue)的角點響應計算對象,這是另一種經典的角點檢測方法&…

性能優化 - 理論篇:CPU、內存、I/O診斷手段

文章目錄 Pre引言1. CPU 性能瓶頸1.1 top 命令 —— 多維度 CPU 使用率指標1.2 負載(load)——任務排隊情況1.3 vmstat 命令 —— CPU 繁忙與等待 2. 內存性能瓶頸2.1 操作系統層面的內存分布2.2 top 命令 —— VIRT / RES / SHR 三個關鍵列2.3 CPU 緩存…

GPIO的內部結構與功能解析

一、GPIO總體結構 總體構成 1.APB2(外設總線) APB2總線是微控制器內部連接CPU與外設(如GPIO)的總線,負責CPU對GPIO寄存器的讀寫訪問,支持低速外設通信 2.寄存器 控制GPIO的配置(輸入/輸出模式、上拉/下拉等&#x…