1. mapjoin优化适合小表join大表sql
set hive.optimize.skewjoin=true; //有数据倾斜时开启负载均衡,默认false set hive.auto.convert.join=true; //设置自动选择MapJoin,默认是true set hive.auto.convert.join.noconditionaltask=true; //map-side join set hive.auto.convert.join.noconditionaltask.size=100000000; //多大的表能够自动触发放到内层LocalTask中,默认大小10M set hive.mapjoin.smalltable.filesize=200000000; //设置mapjoin小表的文件大小为20M,小表阈值
2. 开启并行执行并发
set hive.exec.parallel=true; //能够开启并发执行 set hive.exec.parallel.thread.number=16; //同一个sql容许最大并行度,默认为8。
3. 开启动态分区负载均衡
set hive.exec.dynamic.partition=true; set hive.exec.dynamic.partition.mode=nonstrict;