一、调参数
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、数据类型一致后再关联 3、用insert into 代替union all 4、用group by 代替count(distinct ),慎用后者 5、关联字段异常值处理(空值),避免数据倾斜 6、必要时用中间表代替一条复杂的sql 7、建表时使用ORC文件可以提高性能
以上主要针对hive性能调优,个别调优手段对oracle等数据库也适用,标记颜色的为工作中常用的优化手段
|