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

相关推荐
醉颜凉1 分钟前
Scala自定义Monad实战:从理论到应用的完整指南
大数据·算法·scala
兴通物联科技1 分钟前
CRPT 俄罗斯诚信标签数据采集系统架构与 CSV 合规文件生成原理
大数据·图像处理·人工智能·计算机视觉·系统架构
IvanCodes2 分钟前
二、Scala流程控制:分支与循环
大数据·scala
让学习成为一种生活方式5 分钟前
DupGen_finder v1.0.0安装与使用--生信工具092
大数据·基因组
下班走回家8 分钟前
AI 搜索引擎的崛起:Perplexity、GEO 与传统搜索的差异
大数据·人工智能·搜索引擎
醉颜凉11 分钟前
Scala Cats Effect纯函数式并发编程:从Fiber模型到生产级应用
大数据·网络·scala
珠***格14 分钟前
边缘计算——“云-边-端”协同架构解析
大数据·人工智能·分布式·架构·能源·边缘计算
陕西企来客5 小时前
企来客科技来客 GEO 优化系统深度解析:核心技术与原因分析
大数据·人工智能·科技·搜索引擎
J2虾虾9 小时前
Caddy在Arm64的Kylin Server上的部署
大数据·kylin
jiayong2310 小时前
Claude Code 快速参考卡片
大数据·elasticsearch·搜索引擎·ai·claude·claude code