包含4个方面的优化,分别是:逻辑设计,数据结构,执行配置,HQL
1.逻辑设计
包含分步处理,增量处理,常用数据落地,避免多对多关联
1.1分步处理
若需要处理复杂的业务逻辑,建议先将逻辑拆解成若干个步骤,然后分步编写,尽量避免出现多重嵌套的查询
1.2增量处理
如果历史信息变动不大,就尽量采用增量的方式处理数据,增量处理包括处理到时间分区,以及做增量合并两种方式
1.3常用数据落地
其实是工程化的思想,就是将常用的重复的数据,只生成一次并落地成表,后续需要就集中使用该表,避免重复造轮子
1.4避免多对多关联
从逻辑层面尽量避免出现笛卡尔积关联的情况,如果业务要求必须要有,就考虑通过增量的方式,尽量减少关联的数据体量
2.数据结构
主要包含分区、索引、存储格式
2.1分区(常见优化)
对能够增量存储的数据,建分区表,每次只处理单个分区的数据,建表时分区格式;
partitioned by(dt string)
2.2存储格式(目前统一使用orc格式)
文本类型以外的表,建议统一使用orc,parquet
新建的非导入/导出表,可以尝试改为orc存储格式,提升读写