让决策更智能
新一代智能数据分析平台

数据倾斜导致ETL运行失败的解决方法

观小数发表于:2020年12月10日 14:26:05更新于:2020年12月10日 15:25:17

问题描述:

无效 id (比如 -99 , ’’, null 等) 关联时产生的数据倾斜问题。

数据倾斜通俗来说就是大量的相同key被partition分配到一个分区里,造成了'一个人累死,其他人闲死'的情况。

这种情况下,最容易导致ETL运行失败,例如:销售明细数据(1.8亿行)与 会员信息维表 进行左关联的时候,耗时2小时也没能跑出来,报错原因是超时。

 

产生原因

销售明细数据(1.8亿行)与 会员信息维表 的关联 key为 会员卡号,左表1.8亿行中有1.1亿的会员卡号为null,这些相同的key被一个分区里导致出现一个超级大的任务,这个任务会导致超时。

 

解决方法

方案一:先筛选出key为非null的数据进行关联操作,再把key为null的数据拼接回去;

0015fd1be88797a28d347b84b7291da

方案二: 把空值的 key 变成一个字符串加上随机数,就能把倾斜的数据分到不同的reduce上(进行分块),解决数据倾斜问题。

0015fd1be91bdd083a29b4a98bc4f72

    您需要登录后才可以回复