一、调参数
1、调整map、reduce、job数量----原理未理解,参考网上资料
2、job过多时,尤其是union all过多时,开启job并行,但是比较耗资源
set hive.exec.parallel=true;
set hive.exec.parallel.thread.number=10;#表示同时运行的job的个数
二、减少数据量
1、检查筛选条件(最常用,一般漏掉日期筛选条件导致数据倾斜)
2、按照hive的执行顺序,过滤条件的位置:on>where>having
3、where中数据量大的sql放在最后,旧版oracle对where从后往前解析,新版已优化解析
4、小表与大表inner join时,小表放前面,大表放后面,减少缓存,有些hive已优化
5、数据探索阶段,多用limit
6、列裁剪、行裁剪,对于不用到的字段和数据,做过滤,少用select *
7、当逻辑比较复杂时,增量跑数代替全量跑数
三、sql优化
1、分区和索引
2、数据类型一致后再关联