Kylin3.1.2实战--调优CUBE构建数据倾斜优化

kylin构建时数据倾斜发生情况及解决方案一览:

1)未开启重新分发中间表  (kylin.source.hive.redistribute-flat-table: false的时候,默认为True)

   问题分析:先考虑启动Kylin自带缓解数据倾斜方案,也就是重分发中间表。

 解决方案:开启重分发中间表kylin.source.hive.redistribute-flat-table:true

 

2)开启重分发表且设置share by维度

   问题分析:设置share by维度之后,数据会按照share by维度分发,数据倾斜说明该项不适合作为share by列

   解决方案:1、选取其他share by列  2、去掉share by列

 

3)开启重分发表且未设置share by维度

   问题分析:在Build Base Cuboid (构建基础cuboid)的Mapper就是重分发中间表一步的reducer,所以数据倾斜实质是重分发表中reduce数据不均衡导致。网上大多资料显示未设置share by维度时,按照distribute by rand分发,但那是Kylin2.X的做法,在Kylin3.X中引入了参数ylin.source.hive.redistribute-column-count(重分配列的数量,默认值为 3),如果不设置的该参数就会在第二步时distribute by rowkeys的前3列,这也是我们一般需要将Rowkeys中超高基前移的原因。如果Rowkeys前三列属性保证数据均衡,就会导致空有重分发表依旧数据倾斜

   解决方案:1、将超高基维度前移  2、 设置合适的share by列  3、增加ylin.source.hive.redistribute-column-count个数,直到能满足均匀分布要求

 

posted @ 2022-01-14 17:23  梦里繁花  阅读(110)  评论(0编辑  收藏  举报