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

相关推荐
梦伢mm39 分钟前
直播切片素材不足,易元 AI 可以自动拆分直播视频做带货素材吗?
大数据
Csvn1 小时前
📊 SQL 入门 Day 19:事务与隔离级别
后端·sql
Lalolander1 小时前
2026年成长型企业上金蝶,抓3个重点(预算有限如何起步)
大数据·制造·erp·金蝶erp·erp实施·金蝶ai星空
IT小白杨2 小时前
短视频多账号运营环境管理指南:指纹浏览器与云手机技术解析
大数据·经验分享·web安全·智能手机·音视频·指纹浏览器
今天AI了吗3 小时前
深度学习基础-Harness:从评估框架到工程落地
数据库·人工智能·sql·深度学习·机器学习
林伽一3 小时前
林伽一 · AI科技周报 | 2026年08月第2周
大数据·人工智能·科技
anxiao_m3 小时前
数字孪生私有化部署怎么选?主流平台横向深度测评
大数据·3dcoat
码农颜3 小时前
6.1.2 常⽤⽅法的问题
数据库·sql·oracle
Data_Journal4 小时前
什么是 CAPTCHA,它是如何工作的?
java·大数据·服务器·前端·数据库
跨境小彭4 小时前
店群运营实操复盘:批量活动申报自动化优化方案
大数据·运维·人工智能·自动化·跨境电商·temu·temu电商运营