千家信息网

hive如何优化

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍了hive如何优化,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Hive谓词下推(Predicate pushdown
千家信息网最后更新 2026年10月31日hive如何优化

这篇文章主要介绍了hive如何优化,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

Hive谓词下推(Predicate pushdown)

参数打开设置:hive.optimize.ppd=true

实现:在不影响结果的情况下,尽量将过滤条件提前执行。谓词下推后,过滤条件在map端执行,减少了map端的输出,降低了数据在集群上传输的量,节约了集群的资源,也提升了任务的性能。

开启Map端聚合功能

参数打开设置:hive.map.aggr=true

实现:在map中会做部分聚集操作,能够使map传送给reduce的数据量大大减少,从而在一定程度上减轻group by带来的数据倾斜。

小文件合并

参数设置:

set hive.merge.mapfiles = true ##在 map only 的任务结束时合并小文件

set hive.merge.mapredfiles = false ## true 时在 MapReduce 的任务结束时合并小文件

set hive.merge.size.per.task =256*1000*1000 ##合并文件的大小

set mapred.max.split.size=256000000; ##每个 Map 最大分割大小

set mapred.min.split.size.per.node=1; ##一个节点上 split 的最少值

sethive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; ##执行 Map 前进行小文件合并

实现:文件数目过多,会给HDFS带来压力,并且会影响处理效率,可以通过合并Map和Reduce的结果文件来消除这样的影响。

解决group by造成的数据倾斜

参数设置:hive.groupby.skewindata=true

实现:当选项设定为 true,生成的查询计划会有两个 MR Job。第一个 MR Job 中,Map 的输出结果集合会随机分布到Reduce 中,每个 Reduce 做部分聚合操作,并输出结果,这样处理的结果是相同的 Group By Key有可能被分发到不同的 Reduce 中,从而达到负载均衡的目的;第二个 MR Job 再根据预处理的数据结果按照 Group ByKey 分布到 Reduce 中(这个过程可以保证相同的 Group By Key 被分布到同一个 Reduce中),最后完成最终的聚合操作。

当hive.groupby.skewindata=true时,hive不支持多列上的去重操作,并报错:

Error in semanticanalysis: DISTINCT on different columns notsupported with skew in data.

并行执行

参数设置:

set hive.exec.parallel=true,可以开启并发执行。

set hive.exec.parallel.thread.number=16; //同一个sql允许最大并行度,默认为8。

实现:Hive会将一个查询转化为一个或多个阶段,包括:MapReduce阶段、抽样阶段、合并阶段、limit阶段等。默认情况下,一次只执行一个阶段。不过,如果某些阶段不是互相依赖,是可以并行执行的。

限制笛卡尔积查询

两张表join时必须有on语句

参数设置:set hive.mapred.mode=strict

实现:即使数据量不大的情况下,笛卡尔积造成的数据压力也是很可观的,尽量在参数阶段进行限制,防止误操作。

SQL层面优化

对于复杂的逻辑加工,有以下几个原则:

1、数据量大的表应尽早进行数据筛选并可插入到一张临时表,比如按日期筛选或者地区等,再与其他表进行逻辑关联,可大大减少数据处理时间,这是最简单也是最有效的办法;

2、多个结果集union all的时候,可以使用逐个insertinto到结果表的方式,可提高数据处理速度;

3、join操作左表尽可能放置小表,MR的处理逻辑将小表缓存内存里,然后再去扫描大表,此时效率高;

4、hive虽然已经支持in/exists语法,少量查询也是可以用的,但是更推荐用left semi join形式改写一下,可以在数据量大的时候对比下两种写法效率;

5、还有一些基础的原则啰嗦下:sort by代替order by;group by代替distinct;多表join尽量key相同;空值在join中可能会造成数据倾斜,如果空值部分数据对结果集无影响,提前筛掉;等等~

实际生产中一定要结合业务和公司数据特点,某些优化也不是万能药膏,多些实践对比总会发现更多优化空间。

感谢你能够认真阅读完这篇文章,希望小编分享的"hive如何优化"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

数据 结果 阶段 参数 文件 处理 篇文章 查询 相同 任务 情况 效率 逻辑 部分 影响 支持 输出 最大 压力 原则 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 喔噻互联网科技有限公司 天津市摩尔互联网科技 广州大一互联网络科技有限公司 互联网科技工作委员会主任 互联网科技公司的优势 互联网科技视频 致聘互联网科技 上海喔噻互联网科技 科技创新互联网企业 睿民互联网科技 互联网高科技股票 上海卓越科技 互联网 深圳卡尔迅互联网科技有限公司怎么样 中国最先进互联网科技公司 剑昆互联网络科技有限公司临桂 央行互联网金融科技公司 苏州铭阳互联网科技有限公司 长沙茂晟互联网科技有限公司 群盈汇互联网科技有限公司 2021世界互联网领先科技成果发布 亿人帮互联网科技有限公司 哈尔滨大商圈互联网科技有限公司 互联网科技公司经营范围 重生之互联网科技帝国 盈实互联网科技 互联网科技金融公司 互联网科技咨询 工业互联网展湾科技股份有限公司 万物互联网智能科技 广东猫王互联网科技有限公司电话
0