包含4个方面的优化,分别是:逻辑设计,数据结构,执行配置,HQL
1.逻辑设计
包含分步处理,增量处理,常用数据落地,避免多对多关联
1.1分步处理
若需要处理复杂的业务逻辑,建议先将逻辑拆解成若干个步骤,然后分步编写,尽量避免出现多重嵌套的查询
1.2增量处理
如果历史信息变动不大,就尽量采用增量的方式处理数据,增量处理包括处理到时间分区,以及做增量合并两种方式
1.3常用数据落地
其实是工程化的思想,就是将常用的重复的数据,只生成一次并落地成表,后续需要就集中使用该表,避免重复造轮子
1.4避免多对多关联
从逻辑层面尽量避免出现笛卡尔积关联的情况,如果业务要求必须要有,就考虑通过增量的方式,尽量减少关联的数据体量
2.数据结构
主要包含分区、索引、存储格式
2.1分区(常见优化)
对能够增量存储的数据,建分区表,每次只处理单个分区的数据,建表时分区格式;
partitioned by(dt string)
2.2存储格式(目前统一使用orc格式)
文本类型以外的表,建议统一使用orc,parquet
新建的非导入/导出表,可以尝试改为orc存储格式,提升读写效率。orc数据格式性能提升效果详见:
处理中间表的时候,也可以尝试使用orc格式存
Hive性能优化指南
本文详细介绍了Hive的性能优化方法,涵盖逻辑设计、数据结构、执行配置和HQL四个方面。逻辑设计中强调了分步处理、增量处理、常用数据落地和避免多对多关联。数据结构优化包括分区、存储格式(推荐使用ORC格式)、中间结果压缩和数据索引。执行配置部分涉及执行引擎选择、并行执行、MapJoin、动态分区、控制Map与Reduce数以及合并小文件。HQL优化则涵盖查询裁剪、MapJoin、COUNT DISTINCT和UNION ALL等。通过这些策略,可以显著提升Hive的处理效率。
订阅专栏 解锁全文
769

被折叠的 条评论
为什么被折叠?



