hive的优化
1.环境的优化(内存分配、负载分配等)
2.应用配置属性方面的优化
3.优化hql语句
查看explain执行计划:
使用explain关键字加上hql语句生成执行计划
一个hql语句将会有一个或者多个stage,每一个stage相当于一个mr的job,stage可以是fetch,map join、limit等操作。每一个stage都会
按照依赖关系依次执行,没有依赖关系的可以设置其并行执行,提高效率
1.分区,分桶,索引,视图都是对hive的优化; 文本格式和压缩格式
2.对hql的优化,select返回结果列优化、避免笛卡尔积的查询、limit的优化
3.对join的优化,小表驱动大表(map端join)
默认已开启map端join: set hive.auto.convert.join = true;
大表小表的阈值设置:set hive.mapjoin.smalltable.filesize=25000000; (默认25M一下是小表)
4.严格模式(join不加条件报错、order by不带limit报错、对分区表查询不带分区条件报错;)
5.动态分区(不用手动写分区名,可以设置动态分区个数,避免分区数过多)
6.并行执行(没有依赖关系的可以设置其并行执行)
7.推测执行(某个task运行慢,重新开启一个,谁先运行完,就把慢的kill掉)
8.使用hive的本地模式(在一个JVM里,避免大量的网络IO读写,需要配置)
9.开启J