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

相关推荐
网管NO.19 分钟前
SQL 是什么?
数据库·sql
跨境技工小黎19 分钟前
ChatGPT降智如何恢复?GPT-5.4降智恢复
大数据
taocarts_bidfans21 分钟前
Taoify开放接口全解析:RESTful架构下,跨境开发者多系统对接实操指南
大数据·架构·restful·跨境电商·独立站
兴通物联科技25 分钟前
工业手持终端 PDA 键盘化设计与现场作业效率优化 —— 以 XT8001D 为例
大数据·物联网·计算机视觉·计算机外设·硬件架构
AI小百科27 分钟前
AI大模型推理的不确定性建模有哪些方法
大数据·人工智能
Huazzi.28 分钟前
Git本地和远程历史不一致问题解决步骤
大数据·git·elasticsearch
2601_9564141437 分钟前
科捷智能仓储解决方案 ,助力两轮车行业高效运转
大数据·人工智能
跨境小彭43 分钟前
凌风工具箱|TEMU/Shein/TK多站点销量数据可视化
大数据·信息可视化·数据分析·跨境电商·temu
xwz小王子1 小时前
首个VAM RL后训练框架:VAMPO如何优化机器人操作的视觉动态
大数据·人工智能·机器人
xiaofan6720131 小时前
2026出纳工作能力提升的实用方案:从基础做账到数据分析考证的进阶路径
大数据·数据挖掘·数据分析