shuffle write阶段
Shuffle Write阶段当出现数据倾斜时将出现Bucket size is too large (>2G) after compress的报错提醒,此时应当调整reduce number或者调整分桶策略;
shuffle read阶段
参数一:ngmr.safety.size.single.entry -- hive-site.xml
- 该参数默认值512000000,单位为byte,可session级别生效;
- 注释:单task内相同key对应的value的数据量达到512MB的上限,判定为数据倾斜,报错Data skew for single key found;
- 当出现这个报错提醒时的解决方案:common join转map join或skewjoin
参数二:ngmr.trie.keychunk.mb -- hive-site.xml
- 默认值-1,可session级别生效;
- 注释:
a)单task内所有key本身的总数据量达到2G(默认值情况下内部赋值16,16M*128)的上限,不同key太多了,可判定为数据倾斜,报错Key size is exceed;
b)单个key本身的数据大小超过16MB,报错Can't put key into keychunk, because key length exceed;
c)单task内所有key本身的总数据量达到4G(参数不可调),报错Can't put key into keychunk, because key length exceed 4GB;
- 当出现这个报错提醒时的解决方案:调整reduce number或者分桶数
参数三:ngmr.trie.node.max -- hive-site.xml
- 默认值20480000,可session级别生效;
- 注释:与ngmr.trie.keychunk.mb类似,不同key太多了,可判定为数据倾斜,报错Exceed max trie node in key chunk;
- 当出现这个报错提醒时的解决方案:调整reduce number或者分桶数
- 大表与小表进行关联 --- Map Join
大表与大表进行关联 --- Skew Join
Shuffle阶段数据倾斜问题及解决方案
博客主要介绍了Shuffle阶段的数据倾斜问题。在Shuffle Write阶段,数据倾斜会出现Bucket size is too large的报错,可调整reduce number或分桶策略;Shuffle Read阶段多个参数达到上限会判定数据倾斜,有不同报错及对应解决方案,还提及大表与小表、大表与大表关联的处理方式。
2920

被折叠的 条评论
为什么被折叠?



