HiveSQL调优-最常用的调优方式
系统和其它层面:让经常where的字段进行分区,合理的多分桶、数据使用压缩、建宽表的时候用列式的orc存储、
开启严格模式:会产生笛卡尔积、order by排序后未加limit、查询分区表时未指定列的HiveSQL语句直接执行出错
开启列裁剪和分区裁剪:即只查询要读取的列和分区,避免全表扫描或全列扫描。
HiveSQL语句本身层面:
1. sort by去代替order by:order by需要全局排序,所有的map会进入到一个reduce里面。sort by是多个reduce局部有序。
2. group by来代替count distinct
3. union all时可以开启并发执行
4. 小表在前,大表在后。 小表驱动大表,小表可载入内存
5. 调整Map和Reduce的个数
6. 对task多,难以避免小文件的任务开启JVM重用