忙到现在才得空
马不停蹄来更文啦~
成都今天好冷啊~即使躲在办公室与电脑相依为命,依旧抵抗不住外界凌凌寒风。
不得不说,
凛冬已至啊(大小朋友们记得保暖御寒^_^)
时间关系,今天分享数据倾斜与优化的解决方法
1、设置属性来解决
set hive.optimize.skewjoin=true
set hive.skewjoin.key=100000
还有可能在group by 中设置
hive.groupby.skewindata=true
在回答优化的时候,也可以说map join的方式【对于小表的关联查询的时】
set hive.auto.convert.join=true
set hive.mapjoin.smalltable.fileszie 默认为25M
注意在hive2中该项是默认开启的。注意一下CDH中使用的版本。
从左到右,依次变大。
2、join语句的优化
select m.cid,u.id from table1 m join table2 u on m.cid=u.cid where m.date='2019-12-12'
该条语句的问题是,先join在去使用where条件。
优化后:
select m.cid,u.id from (select cid from table1 where date='2019-12-12') m join table2 u on m.cid=u.cid
降低了计算量。
3、distinct优化
前:select count(distinct id) from tablename
后:select count(1) from (select distinct id from tablename) tmp
select count(1) from (select id from tablename group by id) tmp
4、对于关联分桶的方式
两个表以相同方式划分桶,或者两个表的桶个数是倍数关系。(分桶之段为关联字段时)
【关联字段一定要是分桶字段】
后面还有其它的数据倾斜说明:
https://www.cnblogs.com/ggjucheng/archive/2013/01/03/2842860.html
随机数解决数据倾斜 ---- null值所产生的数据倾斜
https://blog.csdn.net/lpxuan151009/article/details/7980500
END。。。
来源:成都科多大数据科技有限公司
PS:今天微博无意发现一个账号:笑出腹肌的狗哥。
心情不好或者瓶颈时刻,放松一下也是可以的。真的笑到流眼泪,很适合放松情绪