网易首页 > 网易号 > 正文 申请入驻

一个被忽视的 Hive SQL 优化技巧,让查询速度提升 11 倍

0
分享至

Hive SQL 慢起来真是要命。跑一分钟还能忍,一跑十几分钟甚至更久,业务方过来问「你的数据怎么还没出来」,那种感觉,懂的都懂。

最近就遇到这么个真实案例——一个 Hive SQL 脚本,短的时候一分多钟,长的时候能跑到十几分钟,而且极其不稳定。查了一圈,最终只调了两个参数,把 447 秒干到了 39 秒,提升了整整 11 倍。

讲真,这事儿没有多高深,但背后的思路值得聊聊。

别上来就瞎调。第一步永远是看慢在哪里。

Hive 在 Tez 引擎下的执行链路大致是:编译 SQL → 生成物理计划 → 向 YARN 申请资源 → 提交 DAG → 执行 DAG。绝大多数时间都耗在最后一步「Run DAG」上,这是正常的,毕竟计算就在这一步发生。

但有个坑——有时候 YARN 资源紧张,申请 AM 就卡半天。如果不看总体执行日志,你可能会以为是 SQL 本身的问题,实则是在排队等资源。

所以先看日志,确认瓶颈到底在哪一层。

找到瓶颈:MAP1 只开了 8 个 task

我这边的 SQL 主要是一张事实表关联多张维表,union 后写入目标表。通过 explain 拿到执行计划,发现三段子查询分别对应 MAP1、Reducer8 和 Reducer16。

一看运行日志,问题一目了然:

MAP1 耗时 439 秒,但只开了8 个 task。而 Reducer8 和 Reducer16 分别只有 4 秒和 3 秒就跑完了。



所以瓶颈就是 MAP1,原因很简单——并行度不够。说白了,8 个人干的活,你让 8 个人干,你让一堆人等着,能快才怪。

为什么只有 8 个 task?

查了一下主表的元数据:89 个分区,522 个小文件,总行数 2170 万,总数据量约 4.6 GB。

关键问题是小文件太多,522 个文件平均每个才 8MB 左右。虽然 Hive 的 CombineHiveInputFormat 会自动合并小文件,但 Tez 会重新打包数据切片动态调节 task 数量。默认情况下,它觉得这些文件够小了,不需要开太多 task。

解决方案是用和来控制单个切片的大小,从而间接调节 task 数:



调完之后,MAP1 的 task 数从8 个增加到 94 个,并行度直接拉满。



但注意别太贪心。切片太小、task 太多,意味着要申请大量 YARN 容器,不光你的任务自身有开销,还会挤占集群其他人的资源。64MB-128MB 这个区间是我测试下来比较合适的,具体根据你集群的情况来调整。

另一个关键优化:开启向量化

光增加并行度还不够,每个 task 内部的执行效率也要看。

这里就要聊到 Hive 的向量化执行了。传统的行式处理是一条一条地处理数据,CPU 利用率很低;向量化则是批量处理——默认每批 1024 行——能大幅提升 CPU 利用率。

开启方式很简单,加几行配置就行:



但有个坑要注意:向量化要求表格式是 ORC 或 Parquet 这种列式存储,而且有些函数不支持原生向量化。比如instr函数就是不支持的,它会迫使整个执行链路回退到行模式,导致你开了向量化也等于没开。

解决方案:把 instr 换成 like。比如 instr(col, 'something') > 0 可以等价替换成 col like '%something%'。因为 like 有对应的原生向量化版本,差别就在这里。



效果:447秒 → 39秒

两套优化打下去,最终效果:

  • 优化前:447 秒
  • 优化后:39 秒
  • 提速:约11 倍



讲道理,这个优化思路不复杂,但很多同学遇到 Hive SQL 慢的时候第一反应是「是不是数据量太大了?」或者「是不是要上 Spark 了?」——其实不一定。先看看并行度够不够、向量化开没开、有没有函数不支持向量化,这几个点排查下来,大多数场景不用换引擎也能解决问题

几个可以记在小本本上的点

这次优化过程中还有一些额外的收获,一并分享了:

  1. 裁剪—— 别 select *,只取需要的列,减少 IO
  2. 分区裁剪——where 条件尽量用分区字段,不然全表扫描谁也救不了
  3. 尽早过滤——子查询或 CTE 里先把数据过滤掉,减少中间数据量
  4. 了解你的函数——有些看着无害的函数,可能让你的向量化执行白开了

当然,除了上面这些,还有数据倾斜、Reducer 并行度自动调节等方向可以深入。但以上几点是性价比最高的,花最少的时间拿最大的收益。

你手头的 Hive SQL 遇到过这种情况吗?有没有什么奇技淫巧分享一下?评论区聊聊。

声明:内容由AI生成

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
让你“能消费、敢消费、愿消费”:国家出台五年消费新规划

让你“能消费、敢消费、愿消费”:国家出台五年消费新规划

西门老爹
2026-07-16 15:03:48
青黄不接,TyC:阿根廷队需更新换代,斯卡洛尼对此身心俱疲

青黄不接,TyC:阿根廷队需更新换代,斯卡洛尼对此身心俱疲

懂球帝
2026-07-21 05:45:07
赛季第六冠到手!安东内利成功问鼎比利时,距维斯塔潘仅差12分

赛季第六冠到手!安东内利成功问鼎比利时,距维斯塔潘仅差12分

里芃芃体育
2026-07-21 03:00:04
黄植诚妻子马红赴美断了音讯,安保紧急封宅,卧室搜查引人好奇

黄植诚妻子马红赴美断了音讯,安保紧急封宅,卧室搜查引人好奇

唠叨说历史
2026-06-23 11:20:27
赛力斯、北汽、江淮全线预亏,"界"字辈越出越多,车企怎么都在亏钱?

赛力斯、北汽、江淮全线预亏,"界"字辈越出越多,车企怎么都在亏钱?

人间运行手册
2026-07-18 08:02:52
马斯克确认:特斯拉FSD重大转向,记住车主操作,告别通用方案

马斯克确认:特斯拉FSD重大转向,记住车主操作,告别通用方案

野生运营
2026-07-20 03:16:54
无人机在8861米抓住的铁证:珠峰的雪,正被南亚的“脏东西”染黑

无人机在8861米抓住的铁证:珠峰的雪,正被南亚的“脏东西”染黑

蜉蝣说
2026-07-18 23:15:00
日本人评价抗美援朝:中国若是不出兵,美国根本打不到鸭绿江边,可中国偏偏去了,这仗西方复盘了70多年都没搞懂

日本人评价抗美援朝:中国若是不出兵,美国根本打不到鸭绿江边,可中国偏偏去了,这仗西方复盘了70多年都没搞懂

磊子讲史
2026-07-15 15:33:52
塌房了?《生活大爆炸》男主自曝:给多少钱都不再演,近17年没走出来

塌房了?《生活大爆炸》男主自曝:给多少钱都不再演,近17年没走出来

时光慢旅人
2026-07-20 00:47:33
央视怒批,目不识丁,洋相百出,绝望文盲再翻车,冯远征又说对了

央视怒批,目不识丁,洋相百出,绝望文盲再翻车,冯远征又说对了

墨印斋
2026-05-29 13:20:21
《功夫女足》破15亿票房,同样是空降,冯小刚救不了的市,周星驰做到了

《功夫女足》破15亿票房,同样是空降,冯小刚救不了的市,周星驰做到了

电影票房预告片
2026-07-21 01:28:28
记吃不记打?全红婵现身成都,穿搭再惹争议,难怪央媒发文痛批

记吃不记打?全红婵现身成都,穿搭再惹争议,难怪央媒发文痛批

揽星河的笔记
2026-07-19 00:10:03
港媒曝谢贤ICU抢救最后时光:上周昏迷入院,强撑到谢霆锋回港

港媒曝谢贤ICU抢救最后时光:上周昏迷入院,强撑到谢霆锋回港

乡野小珥
2026-07-21 01:51:20
今晚起央一央八北京卫视4剧排播!历史悬疑护宝军旅,实力派扎堆

今晚起央一央八北京卫视4剧排播!历史悬疑护宝军旅,实力派扎堆

情感大头说说
2026-07-21 00:59:30
京圈溃败,1140万压垮了900亿帝国,而冯小刚3亿新片只收回5000万

京圈溃败,1140万压垮了900亿帝国,而冯小刚3亿新片只收回5000万

陈意小可爱
2026-07-21 01:45:12
张柏芝、CoCo为何一分没有?细看兄妹悼文,就明白谢婷婷是服的

张柏芝、CoCo为何一分没有?细看兄妹悼文,就明白谢婷婷是服的

东方不败然多多
2026-07-21 02:44:45
生育率跌破1.01!比日本还低,中国人为啥再也不愿生孩子了?

生育率跌破1.01!比日本还低,中国人为啥再也不愿生孩子了?

誮惜颜a
2026-07-02 06:37:56
后厨卫生条件差!安徽一美食人气榜第1名餐饮企业被罚

后厨卫生条件差!安徽一美食人气榜第1名餐饮企业被罚

凤凰网安徽
2026-07-20 17:20:48
人贩子彭洪菊,逃亡中被卖深山折磨12年,被捕时哭诉:你们怎么才来

人贩子彭洪菊,逃亡中被卖深山折磨12年,被捕时哭诉:你们怎么才来

从零到一研究所
2026-07-17 11:13:46
伟伟道来 | 战争升级,谈判要价也将水涨船高

伟伟道来 | 战争升级,谈判要价也将水涨船高

经济观察报
2026-07-20 17:18:51
2026-07-21 06:24:49
千纸鹤安安
千纸鹤安安
大自然的搬运工
38文章数 1关注度
往期回顾 全部

科技要闻

网易科技"未来大奖2026上半年AI榜单"揭晓

头条要闻

媒体:驱逐所有以色列人 马来西亚对以强硬几乎零成本

头条要闻

媒体:驱逐所有以色列人 马来西亚对以强硬几乎零成本

体育要闻

65岁肌肉男,世界杯最年长冠军主帅

娱乐要闻

谢霆锋发文确认父亲谢贤去世 享年89岁

财经要闻

AI开始挤泡沫

汽车要闻

综合续航超1600km 2027款星途ES上市置换价16.99万起

态度原创

手机
亲子
本地
旅游
公开课

手机要闻

顶配售价预估15999元!有网友抢先预订荣耀Robot Phone 1TB版

亲子要闻

父母给孩子的压力太大,最终导致孩子得了抽眼症!

本地新闻

2026暑期旅行新灵感:跟着影视去旅行

旅游要闻

心疼落魄帝王,铭记抗清英雄,一座磨盘山装着云南人放不下的情怀

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版