数据倾斜与优化的解决方法

忙到现在才得空

马不停蹄来更文啦~

成都今天好冷啊~即使躲在办公室与电脑相依为命,依旧抵抗不住外界凌凌寒风。

不得不说,

凛冬已至啊(大小朋友们记得保暖御寒^_^)

时间关系,今天分享数据倾斜与优化的解决方法

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:今天微博无意发现一个账号:笑出腹肌的狗哥。

心情不好或者瓶颈时刻,放松一下也是可以的。真的笑到流眼泪,很适合放松情绪

《数据倾斜与优化的解决方法》

    原文作者:卿卿老祖
    原文地址: https://www.jianshu.com/p/4bae0e3f5e1c
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞