Hive解决数据倾斜方法
根本原因:数据过于集中。解决的基本思路:打散。
容易产生数据倾斜的几种情况:count distinct、group by key、Join。
- count distinct :
数据量小的时候无所谓,数据量大的情况下,由于COUNT DISTINCT操作需要用一个Reduce Task来完成,这一个Reduce需要处理的数据量太大,就会导致整个Job很难完成,一般COUNT DISTINCT使用先GROUP BY再COUNT的方式替换。
- group by key:
两种解决方法:第一种解决方案1)设置参数:这里有两个参数。i)开启map端聚合。
ii)有数据倾斜的时候开启负载均衡。开启了负载均衡以后,会生成两个mr,第一个mr会打散数据,也就是随机分发数据,进行局部聚合;第二个mr根据group by key的逻辑完成全局聚合。
2)手动优化sql:
两阶段聚合,加盐局部聚合,去盐全局聚合。(利用random构造辅助列,先group by key,random,进行局部聚合;再group by key完成全局聚合)。
- Join:
查看日志找到倾斜的key。
- 如果倾斜的key是脏数据,直接过滤掉;
- 增加reduce个数;
- 如果两个表join的时候,一个表为小表,可以用mapjoin做。
- 如果是两个大表join,并且倾斜的 key 有实际的意义,可以将它们单独抽取出来,对应的行单独存入临时表中,然后打上一个较小的随机数前缀(比如0~9),最后再进行聚合。
- 设置hive.optimize.skewjoin=true。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhiabekh
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22