数据倾斜都有哪些原因?

#hive#数据倾斜都有哪些原因?分别从spark、hive的角度分析。
1、spark中的数据倾斜:包括spark streaming和sparkSQL。
主要表现为:
1)executor lost,OOM.shuffle 过程出错;
2)Driver OOM;
3)单个executor执行时间特别久,整个仍然任务卡在某个阶段不能结束;
4)正常运行的任务突然失败。
2、hive中常见的数据倾斜:
1)key分布不均衡
2)业务问题后者业务数据本身的问题,某些数据比较集中
3)建表的时候考虑不周
4)某些sql语句本身就有数据倾斜,例如:
(1)大表join小表:其实小表的key集中,分发到某一个或者几个reduce上的数据远远高于平均值
(2)大表join大表:空值或无意义值:如果缺失的项很多,在做join时这些空值就会非常集中,拖累进度。
(3)group by: group by的时候维度过小,某值的数量过多,处理某值的reduce非常耗时间。
(4)Count distinct:某特殊值过多,处理此特殊值的reduce耗时。
3、解决思路:
1)业务逻辑方面:
  从业务逻辑层面来优化数据倾斜(比如两个城市突然做推广活动,导致两个城市的数据猛烈增长100000%,其余的城市的数据量不变的情况下,然后对不同的城市做group的数据统计,这时久会产生数据倾斜。如果我们这时对两个城市单独做count,可能用到两次MR,第一次是打散计算,第二次则是聚合,完成之后再和其他城市做最后的整合)
2)程序方面:
可以先group by, 再在外面套一层count
3)调参
4)从业务和数据上解决数据倾斜

#大数据##spark#
全部评论
非常有帮助
点赞 回复 分享
发布于 2023-02-23 07:45 北京

相关推荐

1.  简单介绍一下项目2.  在中间层建设中遇到过什么问题3.  数仓中状态的更新是比较及时的,如何记录这些状态,最核心是关心最终的状态还是流转的状态4.  拉链表是什么,怎么实现的,执行过程中怎么解决效率的问题5.  用的什么计算引擎,sql在spark上怎么执行的6.  spark的提交流程7.  uv和pv的含义,计算uv在spark上的运行原理8.  MapReduce的原理,快排的目的是什么,有序的目的是什么,知道每个过程才能知道如何去调优9.  sql转ast是怎么转的10. ast做逻辑执行计划优化做了哪些11. 逻辑执行计划和物理执行计划大概有什么区别12. 写sql过程中有没有遇到过执行时间特别长的,引出数据倾斜相关内容(问的很细,基本所有的都问了)13. 不同数据类型join为什么导致数据倾斜14. mapjoin和正常join的区别,mapjoin原理是什么,怎么实现的15. 加随机数打散,两阶段聚合怎么做的16. new一个线程怎么做,thread和runnable的区别是什么17. java集合类用过哪些(说没怎么用过java,就没再问了)18. sql在不同执行引擎下有什么区别,答有些语法不通用,为什么不通用,如何造成这种问题的19. sql中所有关键字的执行顺序20. a join b where条件写在join里面和join外面 有什么区别21. 4道sql22. 一道mid算法做的是计算引擎调优,一直在问spark底层,顶不住顶不住。当晚挂...
查看20道真题和解析
点赞 评论 收藏
分享
查看53道真题和解析
点赞 评论 收藏
分享
评论
7
27
分享

创作者周榜

更多
牛客网
牛客企业服务