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

相关推荐
小Tomkk4 分钟前
化繁为简:Access 与 SQL 创新指南(第三篇)
数据库·sql·oracle
培***事5 分钟前
从中专到财务主管,需要攻克哪些证书?
大数据
草履虫建模7 分钟前
面试常问 SQL 优化八股文总结:慢查询、索引失效、回表、覆盖索引一次搞懂
java·数据库·spring boot·sql·面试·职场和发展·数据库架构
xb113217 分钟前
# SQL基础知识学习指南
数据库·sql·oracle
KKKlucifer22 分钟前
堡垒机高危命令拦截与操作审批流程的技术实现
大数据·网络·安全
GEO_Huang26 分钟前
想要排名稳?数谷 GEO 优化助力企业品牌升级
大数据·人工智能·百度·aigc·rpa·geo
云境天合小科普27 分钟前
水中叶绿素a测定仪:精准预警水体富营养化风险
大数据
coft1 小时前
AI 大模型如何重塑大数据开发平台:从“写SQL“到“说人话“
大数据·人工智能·sql
changhong19861 小时前
mybatisPlus打印sql配置
数据库·sql
jinanmichael1 小时前
Mybatis控制台打印SQL执行信息(执行方法、执行SQL、执行时间)
数据库·sql·mybatis