spark sql 的join调优

背景

spark sql中join操作是最耗费性能的操作,因为这涉及到数据的shuffle操作,如果由此导致数据倾斜更是会雪上加霜,那么如何优化join操作的性能呢?

join优化

方式一 broadcast广播:

如果是大表和小表的join操作,最简单的解决方式就是对小表进行broadcast操作,把小表的数据广播到各个executor的内存中,然后和大表进行join,这种方式是join优化的首选,不过也有硬伤,因为有个前提,broadcast的表要是小表,量不能太大

方式二 distributed by操作:

如果是两个大表之间进行join操作,影响性能的主要因素是数据倾斜,我们要进行尽量保证join的两张表发送到executor的数据的数量是一样的,而这个可以通过distributed by join(条件列)进行,这样可以提前把两个表的数据按照条件列分布好,在进行join操作时就不会发生数据倾斜的问题了

注:distributed by 条件列 是把数据按照条件列进行分区,分区的数量由set spark.sql.shuffle.partitions=600; 进行控制,此外,即使不是用于join操作,遇到表数据倾斜是我们也可以使用,例如:select * from Table distribute by rand(); 这样就可以保证每个分区的数据基本一致了

参考文献: https://blog.csdn.net/vipshop_fin_dev/article/details/95231696

相关推荐
CS创新实验室2 分钟前
CS实验室行业报告:数据类岗位就业分析报告
大数据·数据分析·数据科学
盟接之桥5 分钟前
盟接之桥®制造业EDI软件:连接全球供应链的“数字桥梁”,赋能中国制造走向世界
大数据·网络·人工智能·汽车·制造
lifallen35 分钟前
一篇文章讲透 Flink State
大数据·数据库·python·flink
AI先驱体验官1 小时前
臻灵:数字人形象驱动新突破,NVIDIA开源PersonaPlex带来的技术变局
大数据·人工智能·深度学习·重构·开源·aigc
鸿蒙程序媛1 小时前
【工具汇总】git 常用命令行汇总
大数据·git·elasticsearch
人工智能培训1 小时前
如何将高层任务分解为可执行的动作序列?
大数据·人工智能·算法·机器学习·知识图谱
Trouvaille ~1 小时前
【MySQL篇】复合查询:多表数据的整合
数据库·sql·mysql·面试·复合查询·基础入门·多表连接
Project_Observer1 小时前
列表视图中的筛选列
大数据·数据库·深度学习·机器学习·深度优先
紧固视界1 小时前
汽车紧固件最新技术趋势解析:2026上海紧固件专业展有哪些看点
大数据·人工智能·汽车·紧固件·上海紧固件展·上海紧固件专业展
cyber_两只龙宝1 小时前
【Oracle】Oracle之SQL中的单行函数
linux·运维·数据库·sql·云原生·oracle