日常工作中数据倾斜主要发生在Reduce阶段,而很少发生在 Map阶段,其原因是Map端的数据倾斜一般是由于HDFS数据存储不均匀造成的(一般存储都是均匀分块存储,每个文件大小基本固定),而Reduce阶段的数据倾斜几乎都是因为key值数据量偏多的情况而导致的。

解决方法:

1:

set hive.groupby.skewindata=true;

如果任务长时间卡在99%则基本可以认为是发生了数据倾斜,建议调整参数以实现负载均衡,原理:生成的查询计划会有两个MRJob。第一个MRJob 中,Map的输出结果集合会随机分布到Reduce中,每个Reduce做部分聚合操作,并输出结果,这样处理的结果是相同的GroupBy Key有可能被分发到不同的Reduce中,从而达到负载均衡的目的;第二个MRJob再根据预处理的数据结果按照GroupBy Key分布到Reduce中(这个过程可以保证相同的GroupBy Key被分布到同一个Reduce中),最后完成最终的聚合操作

2:小表关联大表操作,使用Mapjoin:

set hive.auto.convert.join=true;--自动开启MAPJOIN优化,默认值为true
set hive.mapjoin.smalltable.filesize=2500000;--通过配置该属性来确定使用该优化的表的大小,如果表的大小小于此值就会被加载进内存中,默认值为2500000(25M)

3:Join操作注意关联字段不能出现大量的重复值或者空值

4:Count(distinct id ) 去重统计要慎用,尽量通过其他方式替换

大数据面试题:数据倾斜解决方法相关推荐

  1. Hive数据倾斜解决方法总结

    Hive数据倾斜解决方法总结 参考文章: (1)Hive数据倾斜解决方法总结 (2)https://www.cnblogs.com/kongcong/p/7777092.html 备忘一下.

  2. MySQL导出数据遇到secure-file-priv问题的解决方法

    这篇文章主要为大家详细介绍了MySQL导出数据遇到secure-file-priv问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 ERROR 1290 (HY000): The My ...

  3. c mysql 插入大量数据_C++操作MySQL大量数据插入效率低下的解决方法

    通常来说C++操作MySQL的时候,往Mysql中插入10000条简单数据,速度非常缓慢,居然要5分钟左右, 而打开事务的话,一秒不到就搞定了! 具体实现代码如下: #include #include ...

  4. mysql left join 右表数据不唯一的情况解决方法

    mysql left join 右表数据不唯一的情况解决方法 参考文章: (1)mysql left join 右表数据不唯一的情况解决方法 (2)https://www.cnblogs.com/ne ...

  5. java json utf-8_java读取json数据发生中文乱码的解决方法

    java读取json数据发生中文乱码的解决方法 发布时间:2020-06-21 15:58:48 来源:亿速云 阅读:268 作者:鸽子 java读取json数据出现乱码的代码://从json文件中读 ...

  6. PHP自动判断用户会员过期,php,_定时扣除用户过期积分,但平台用户量比较大,有没有好的解决方法?,php - phpStudy...

    定时扣除用户过期积分,但平台用户量比较大,有没有好的解决方法? 最近网站实行用户积分过期制度,只保留用户近三月积分,三月前未使用积分进行扣除 但平台用户量比较大,感觉这样做会出问题,有没有好的解决方法 ...

  7. 大圣轮回服务器维护,大圣轮回登录不了怎么办_大圣轮回登录不了解决方法介绍_游戏吧...

    大圣轮回是一款西游记主题的回合游戏,精美Q萌的画面表现,轻松愉快的挂机玩法,浓郁的神话气息,但是很多小伙伴发现会有登录不了的问题,这个时候怎么办呢,下面游戏吧小编为大家带来大圣轮回登录不了解决方法介绍 ...

  8. mac u盘文件过大 拷贝不进去_mac文件太大无法复制到u盘怎么办 mac文件太大无法复制到u盘解决方法...

    类型:Mac图形图像大小:23.3M语言:中文 评分:10.0 标签: 立即下载 mac文件太大无法复制到u盘怎么办?mac文件太大无法复制到u盘解决方法.最近很多用户在询问mac文件太大无法复制到u ...

  9. Pycharm打开(打印)大数据文件显示不全的解决方法

    Pycharm打开(打印)大数据文件显示不全,即控制台显示不完那么多行. 解决方法如下: -------------追加以下字段 idea.max.intellisense.filesize = 20 ...

最新文章

  1. unity, TRANSFORM_TEX
  2. centos6.8防火墙模块未加载
  3. 另一鲜为人知的单例写法-ThreadLocal
  4. WatchOS系统开发大全(7)-WKInterfaceImage
  5. flutter怎么手动刷新_如何手动刷新或重新加载Flutter Firestore StreamBuilder?
  6. 防抖和节流(白话版)
  7. Flask-Login Flask-Security 登录与权限控制
  8. calayer动画总结(一)
  9. linux 命令下删除字符,【Linux基础】tr命令替换和删除字符
  10. axios打包放到服务器上接口地址404_如何把网页文件放到云虚拟主机
  11. oracle数据库没有选项,创建oracle数据库时,出现ORA-00922: 选项缺失或无效
  12. Docker 第四章 访问容器
  13. C语言打印打印ASCLL表
  14. 分组求和并排序python_python 实现分组求和与分组累加求和代码
  15. 计算机网络冗余,计算机网络基础知识之循环冗余码
  16. 参数validator/valid校验用法(通俗)
  17. 51nod-2534 最小旅行路线
  18. 销售出身和技术出身的哪一个创业更容易一点?
  19. Python分类检测问题的常用指标 - TPR TNR TPR f1-score
  20. 学历既是敲门砖,又可能成为枷锁

热门文章

  1. 学会了这些保你5年内买车买房
  2. vuecli添加和移除插件_iZotope Neutron 3 Advanced——智能中子混音插件包
  3. python与excel教程_办公自动化系列(2) | Python与Excel交互教程 - 交互演示
  4. 解决git提交每次都要输入密码
  5. 微信小程序 页面刷新的方法
  6. win7连接xp远程桌面
  7. 【深度解析】Java中的乐观锁、悲观锁
  8. 正规式转换为NFA代码实现
  9. 人人车“裁员风波” 企业员工各执一词
  10. 普里姆算法求最小生成树(简易算法版)