Hive数仓操作(九)

一、Hive的DQL查询顺序

HQL语法基本上与传统的SQL一致,包括SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY和LIMIT等关键步骤

sql 复制代码
SELECT *  -- 1. 选择所有列
FROM employees  -- 2. 数据来源是 employees 表
WHERE salary > 3000  -- 3. 筛选工资大于 3000 的行
GROUP BY department_id  -- 4. 按 department_id 进行分组
HAVING AVG(salary) > 3500  -- 5. 筛选平均工资大于 3500 的分组
ORDER BY department_id  -- 6. 按 department_id 排序
LIMIT 10;  -- 7. 限制结果为前 10 行
执行顺序:
  1. FROM

    • 确定数据来源,并建立数据范围。
  2. WHERE

    • 对数据进行筛选,剔除不符合条件的行。
  3. GROUP BY

    • 对数据进行分组,并进行聚合计算。
  4. HAVING

    • 在分组基础上进行进一步筛选。
  5. SELECT

    • 选择和计算输出的列。
  6. ORDER BY

    • 对结果集进行排序。
  7. LIMIT / OFFSET

    • 截取部分结果进行输出。

二、Hive的排序方式

Hive有四种排序方式,也称为四个By

  • Order By:全局排序,单个Reducer。
  • Sort By:每个Reducer内部排序。
  • Distribute By:根据字段哈希分配Reducer。
  • Cluster By:分配和排序字段相同时使用。

1. Order By

  • 全局排序,只能使用一个Reducer进行排序,一般公司会限制无法使用。

  • 示例

    sql 复制代码
    -- 查询员工信息按工资升序排列
    SELECT * FROM emp ORDER BY sal;
    
    -- 查询员工信息按工资降序排列
    SELECT * FROM emp ORDER BY sal DESC;
  • 注意:由于使用单个Reducer,效率较低。

2. Sort By

  • 每个Reducer内部进行排序,但对全局来说结果无序。

  • 示例

    sql 复制代码
    -- 设置Reducer个数
    SET mapreduce.job.reduces=3;
    
    -- 根据部门编号降序查看员工信息
    SELECT * FROM emp SORT BY empno;
    
    -- 将结果导入文件中(按部门编号降序排序)
    INSERT OVERWRITE LOCAL DIRECTORY '/opt/module/datas/sortby-result'
    ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
    SELECT * FROM emp SORT BY empno;
  • 注意:需要提前设置Reducer数量。

3. Distribute By

  • 将相同哈希的数据分配到同一个Reducer,对全局来说结果无序。

  • 结合Sort By使用

    sql 复制代码
    -- 按部门编号分区,再按员工编号降序排序
    SET mapreduce.job.reduces=3;
    SELECT * FROM emp DISTRIBUTE BY deptno SORT BY empno DESC;
    
    -- 格式化导出
    INSERT OVERWRITE LOCAL DIRECTORY '/opt/module/datas/distribute-result'
    ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
    SELECT * FROM emp DISTRIBUTE BY deptno SORT BY empno DESC;

    结果(按部门编号分区(类似于分桶的哈希算法)并按员工编号降序排序):

  • Reducer for deptno 10:

    复制代码
    | empno | ename  | deptno | sal  |
    |-------|--------|--------|------|
    | 130   | Daniel | 10     | 3150 |
    | 127   | Aaron  | 10     | 3800 |
    | 124   | Xavier | 10     | 3700 |
    ...
  • Reducer for deptno 20:

    复制代码
    | empno | ename  | deptno | sal  |
    |-------|--------|--------|------|
    | 129   | Charlie| 20     | 2650 |
    | 126   | Zoe    | 20     | 3950 |
    | 123   | Walt   | 20     | 2500 |
    ...
  • Reducer for deptno 30:

    复制代码
    | empno | ename  | deptno | sal  |
    |-------|--------|--------|------|
    | 128   | Betty  | 30     | 4450 |
    | 125   | Yvonne | 30     | 4100 |
    ...

4. Cluster By

  • Distribute By和Sort By字段相同时等价,对全局来说结果无序。

  • 排序只能升序不能指定DESC降序

  • 示例

    sql 复制代码
    -- 等价写法
    SELECT * FROM emp CLUSTER BY deptno;
    SELECT * FROM emp DISTRIBUTE BY deptno SORT BY deptno;

    结果(按部门编号分区并升序排序):

  • Reducer for deptno 10:

    复制代码
    | empno | ename  | deptno | sal  |
    |-------|--------|--------|------|
    | 101   | Alice  | 10     | 3000 |
    | 107   | Carol  | 10     | 3500 |
    | 106   | Frank  | 10     | 3200 |
    ...
  • Reducer for deptno 20:

    复制代码
    | empno | ename  | deptno | sal  |
    |-------|--------|--------|------|
    | 102   | Bob    | 20     | 4000 |
    | 105   | Eve    | 20     | 2500 |
    ...
  • Reducer for deptno 30:

    复制代码
    | empno | ename  | deptno | sal  |
    |-------|--------|--------|------|
    | 104   | Dave   | 30     | 4500 |
    | 107   | Grace  | 30     | 4800 |
    ...
相关推荐
不动明王198414 小时前
能力联邦:Presto 的一种可能演进方向
大数据·iceberg·presto·湖仓·lance·联邦查询引擎
Jelena1577958579215 小时前
电商运营分析数据比价接口实战:多平台价格监控与智能决策系统
java·大数据·数据库
AC赳赳老秦17 小时前
企业工商公开信息采集分析:OpenClaw 批量查询企业工商信息,生成企业画像报告
大数据·开发语言·python·自动化·php·deepseek·openclaw
BerryS3N18 小时前
Code Git 工作树:多分支开发的痛点与工作树的曙光
大数据·git·elasticsearch
小K漫剧创作笔记21 小时前
AI短剧出海从「选修课」变「必修课」:合规分发正在成为内容全球化的真正门槛
大数据·人工智能·ai·aigc·漫剧
samLi062021 小时前
【数据集】中国“千兆城市”关键指标数据(2021-2023年)
大数据
城数派21 小时前
1991-2100年中国1km分辨率逐月气候指标栅格数据集(28个气象指标)
大数据
AC赳赳老秦21 小时前
司法公开数据采集应用:OpenClaw 抓取裁判文书公开信息,批量整理同类参考案例
java·大数据·python·数据挖掘·数据分析·php·openclaw
yurenshi16681 天前
自媒体多账号管理工具 4 款实测:聚媒通 / 融媒宝 / 新榜小豆芽 / 矩阵通横向对比,快速选型
大数据·矩阵·媒体
nVisual1 天前
机柜PDU安装位置与空间建模方案
大数据·网络·数据库·信息可视化·数据中心基础设施管理