真正让你明白Hive调优系列3:笛卡尔乘积,小表join大表,Mapjoin等问题
0.Hive中的优化分类 真正想要掌握Hive的优化,要熟悉相关的MapReduce,Yarn,hdfs底层源码,明晰Hive的底层执行流程。真正让你明白Hive调优系列,会征对下面分类逐一分析演示。 大类1:参数优化 文件输入前看是否需要map前合并小文件 控制map个数,根据实际需求确认每个map的数据处理量,split的参数等 Map输出是否需要启动压缩,减少网络传输,OOM处理等 控制redcue个数,控制每个reduce的吞吐量,OOM处理等 是否将common-join转换成map-join处理策略 文件输出是否需要启动小文件合并策略 其他相关参数的配置:如严格模式,JVM重用,列剪切等 大类2:开发中优化 数据倾斜,这个是Hive优化的重头戏。出现的原因是因为出现了数据的重新分发和分布,启动了redcue。Hive中数据倾斜分类:group by ,count(distinct)以及join产生的数据倾斜(当然一些窗口函数中用了partition by一会造成数据倾斜) j oin相关的优化 :分类大表join大表,小表join大表的优化 代码细节优化分类 : 比如去重用group by替代distinct ; 多表关联,先进行子查询后再进行关联 ;表关联时一定要在子查询里过滤掉NULL值,避免数据倾斜; 不要对一个表进行重复处理,多使用临时表