阿龙学堂-Spark 数据倾斜如何处理
1、处理方式
数据倾斜的问题优先从数据源解决,以下方法是辅助缓解:
- spark-sql任务,可以尝试distribute by () 某个字段
- 参考文档调优: https://blog.csdn.net/lsshlsw/article/details/52025949
- 数据倾斜的定位方法:
选取key,对数据进行抽样,统计出现的次数,根据出现次数大小排序取出前几个
df.select("key")
.sample(false,0.1)
.(k=>(k,1))
.reduceBykey(_+_)
.map(k=>(k._2,k._1))
.sortByKey(false)
.take(10)
2、数据倾斜情况
- null(空值)或是一些无意义的信息()之类的,大多是这个原因引起。
- 无效数据,大量重复的测试数据或是对结果影响不大的有效数据。
- 有效数据,业务导致的正常数据分布。
3、解决办法
- 第1,2种情况,直接对数据进行过滤即可。
- 第3种情况则需要进行一些特殊操作,常见的有以下几种做法。隔离执行,将异常的key过滤出来单独处理,最后与正常数据的处理结果进行union操作。对key先添加随机值,进行操作后,去掉随机值,再进行一次操作。
4、注意事项
SQL中Join关联key使用rand()可能导致数据重复(丢失)问题
5、参考资料
建议认真阅读参考资料:
http://www.jasongj.com/spark/skew/
https://www.iteblog.com/archives/1671.html
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
有问题请联系QQ:765120845
欢迎关注微信公众号 【阿龙学堂】,更多编程基础知识及机器学习学习内容
阿龙学堂-Spark 数据倾斜如何处理相关推荐
- spark+数据倾斜+解决方案
spark+数据倾斜+解决方案 1.如何判断数据切斜的发生源头? 根据stage划分原理和sparkUI 2.数据倾斜解决方案 解决方案一:使用Hive ETL预处理数据
- Spark数据倾斜的完美解决
数据倾斜解决方案 数据倾斜的解决,跟之前讲解的性能调优,有一点异曲同工之妙. 性能调优中最有效最直接最简单的方式就是加资源加并行度,并注意RDD架构(复用同一个RDD,加上cache缓存).相对于前面 ...
- Spark数据倾斜解决方案(转)
本文转发自技术世界,原文链接 http://www.jasongj.com/spark/skew/ Spark性能优化之道--解决Spark数据倾斜(Data Skew)的N种姿势 发表于 2017 ...
- Spark数据倾斜优化
Spark数据倾斜 就是数据分到各个区的数量不太均匀,可以自定义分区器,想怎么分就怎么分. Spark中的数据倾斜问题主要指shuffle过程中出现的数据倾斜问题,是由于不同的key对应的数据量不同导 ...
- 解决Spark数据倾斜(Data Skew)的 N 种姿势 与 问题定位
Spark性能优化之道--解决Spark数据倾斜(Data Skew)的N种姿势 本文结合实例详细阐明了Spark数据倾斜的问题定位和几种场景以及对应的解决方案,包括避免数据源倾斜,调整并行度,使用自 ...
- Spark 数据倾斜介绍_大数据培训
Spark 数据倾斜 Spark中的数据倾斜问题主要指shuffle过程中出现的数据倾斜问题,是由于不同的key对应的数据量不同导致的不同task所处理的数据量不同的问题. 例如,reduce点一共要 ...
- Spark - 数据倾斜实战之 skewness 偏度与 kurtosis 峰度 By ChatGPT4
目录 一.引言 二.峰度 Skewness 简介 三.峰度 kurtosis 简介 四.Skewness 偏度与 kurtosis 峰度实现 1.Spark 实现 2.自定义实现 五.偏度.峰度绘图 ...
- hive解决数据倾斜问题_八种解决 Spark 数据倾斜的方法
有的时候,我们可能会遇到大数据计算中一个最棘手的问题--数据倾斜,此时Spark作业的性能会比期望差很多.数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能. 数 ...
- Spark数据倾斜-采样倾斜key并分拆join操作-详细图解与代码
本文修改自[1]中的方案六. 下面的方案简述来自[1] 方案适用场景:两个RDD/Hive表进行join的时候,如果数据量都比较大,无法采用"解决方案五",那么此时可以看一下两个R ...
最新文章
- 华为备忘录导入印记云笔记_原来华为手机自带会议神器,开会不用手写,这个功能就能搞定...
- express ajax分页实例,element+express+mongoose实现分页查询
- 时频分析:短时傅里叶变换实现(2)
- 你想过自己注定是个普通人吗?
- java数据库连接类,已经把数据库操作的方法都封装好了
- [Django]SE项目回忆录(二)-注册/登录功能的实现及细节
- YbtOJ#903-染色方案【拉格朗日插值,NTT,分治】
- ds18b20温度传感器驱动编写
- djano 字段不重复_Java 14 发布了,不使用quot;classquot;也能定义类了?还顺手要干掉Lombok!...
- it转正述职报告_三年产品经理的转正述职报告
- ​8次迭代5大升级,旷视天元1.0预览版正式发布
- 25个恶意JavaScript 库通过NPM官方包仓库分发
- [小创造]“XENON”,我的JSON变种。
- 浙大python判断两个字符串是否为变位词_Python实现对变位词的判断
- 使用 IntraWeb (25) - 基本控件之 TIWRegion
- 前端页面,引入PingFang SC(苹方简)字体
- Win11磁盘被写保护怎么解除?
- 增大图像感受野方法的总结
- initramfs模式介绍及解决方法
- BatchNorm和LayerNorm的区别