Skip to content
Hive 表设计与 SQL 调优 · 第 2 篇 / 共 2 篇
领域数据与中间件
专题Hive 专题
当前序列Hive 表设计与 SQL 调优
阅读位置第 2 篇 / 共 2 篇当前专题第 1 个序列 / 共 3 个序列

Hive SQL 调优与常见坑:为什么 SQL 能跑完,却总是跑得很慢

Hive SQL 的典型问题往往不是:

  • 跑不出来

而是:

  • 能跑
  • 但总是很慢

先说结论

Hive 调优最值得优先看的通常是:

  1. 扫描数据量是不是太大
  2. Join 是否合理
  3. 小文件是否过多
  4. 分区过滤有没有真正生效

一、为什么扫描量永远是第一位

因为很多 SQL 慢的根因,最后都能归到:

  • 读太多

如果分区没裁剪好,或者写法让优化器没法有效利用过滤条件,再多调优也很有限。

二、Join 为什么经常是性能大坑

因为离线链路里最容易出现:

  • 大表 Join 大表
  • 数据倾斜
  • 中间结果膨胀

这类问题一旦出现,任务耗时会被迅速放大。

三、小文件为什么这么烦

小文件问题会直接带来:

  • 元数据压力
  • 任务调度开销
  • 查询效率下降

很多 Hive 链路越跑越重,小文件往往是长期根因之一。

一句话总结

Hive SQL 调优真正重要的,不是背参数,而是先把:

  • 扫描量
  • Join 模型
  • 分区过滤
  • 小文件问题

这四件事压下来。

延伸阅读相关文章优先当前专题,再补跨专题关联。
同一序列 · 回看前文会更完整Hive 分区、分桶和文件格式怎么选适合先把分区分桶和文件格式看明白,再进入 SQL 调优与常见坑。Hive 专题 · Hive 表设计与 SQL 调优同专题其他序列 · 共享标签:MySQLMapJoin、数据倾斜和 SQL 优化怎么配合适合把 Metastore、小文件和倾斜优化放在一起看。Hive 专题 · Hive 元数据与治理细节同专题其他序列 · Hive 数仓表与 SQL 执行成本动态分区写入需要关注哪些配置适合把分区表、小文件、存储格式和动态分区写入放在一条 Hive 数仓治理主线上看。Hive 专题 · Hive 数仓表与 SQL 执行成本同专题其他序列 · Hive 数仓表与 SQL 执行成本分区表为什么也可能查得很慢适合把分区表、小文件、存储格式和动态分区写入放在一条 Hive 数仓治理主线上看。Hive 专题 · Hive 数仓表与 SQL 执行成本跨专题关联 · 同场景:基础学习聚合根和事务边界怎么划分适合把 DDD、Saga、TCC 和 BFF、网关边界放在一起看。架构与设计专题 · 分布式系统取舍与边界跨专题关联 · 同场景:基础学习冷热分层和索引生命周期怎么设计适合把 refresh、merge、冷热分层和批量写入放到一起看。Elasticsearch 专题 · Elasticsearch 写入与分层架构
继续阅读Hive 表设计与 SQL 调优当前序列第 2 篇 / 共 2 篇当前专题第 1 个序列 / 共 3 个序列
往前看
上一篇Hive 分区、分桶和文件格式怎么选回到当前序列上一章上一序列HBase 设计与热点治理从第 1 篇开始:HBase 核心架构与 RowKey 设计
往后看
下一序列Hive 元数据与治理细节从第 1 篇开始:Metastore 和分区裁剪到底在解决什么问题

把零散经验整理成可查、可复用、可持续更新的企业级知识门户