什么是数据倾斜及数据倾斜是怎么产生

1、数据倾斜

简单来说数据倾斜就是数据的key 的分化严重不均,造成一部分数据很多,一部分数据很少的局面。


举个 word count 的入门例子,它的map 阶段就是形成 (“aaa”,1)的形式,然后在reduce 阶段进行 value 相加,得出 “aaa” 出现的次数。若进行 word count 的文本有100G,其中 80G 全部是 “aaa” 剩下 20G 是其余单词,那就会形成 80G 的数据量交给一个 reduce 进行相加,其余 20G 根据 key 不同分散到不同 reduce 进行相加的情况。如此就造成了数据倾斜,临床反应就是 reduce 跑到 99%然后一直在原地等着 那80G 的reduce 跑完。


2、容易造成数据倾斜的原因

分组group by

情形:group by 维度过小,某值的数量过多
后果:处理某值的reduce非常耗时


去重 distinct count(distinct xx)
情形:某特殊值过多
后果:处理此特殊值的reduce耗时


连接 join

情形1:其中一个表较小,但是key集中
后果1:分发到某一个或几个Reduce上的数据远高于平均值
情形2:大表与大表,但是分桶的判断字段0值或空值过多
后果2:这些空值都由一个reduce处理,非常慢

更多精选文章
标签: reduce、倾斜、情形、后果、80g
一个创业中的苦逼程序员
笔试题


刷题


简历模板


AI算法


大数据


内推


推荐阅读:
阿里巴巴笔试面试大全
腾讯笔试面试大全
百度笔试面试大全
今日头条笔试面试大全
网易笔试面试大全
Google笔试面试大全
更多笔试面试大全
隐藏