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

相关推荐
智慧景区与市集主理人8 小时前
巨有科技会员积分系统|深耕私域存量,破解景区复购增收难题
大数据·科技
这个DBA有点耶9 小时前
云上运维新挑战:当数据库不再“看得见摸得着”
数据库·sql·程序人生·云原生·运维开发·学习方法·dba
Litluecat10 小时前
2026年6月1日科技热点新闻
大数据·人工智能·科技·推荐·热点·新闻·每日
九皇叔叔10 小时前
PostgreSQL/openGauss pg_stats 视图从入门到精通:统计信息、执行计划与慢 SQL 优化实战
数据库·sql·postgresql
志栋智能10 小时前
AI驱动无代码:降低巡检超自动化的门槛
大数据·运维·网络·人工智能·自动化
代码匠心10 小时前
从零开始学Flink:Flink CDC 入门
大数据·数据仓库·flink
Irene199110 小时前
基于现有的大数据开发实验环境,深入理解数据完整生命周期,工具配合使用,全流程练习
大数据·工具·开发环境·项目练习
Hefei GlobefishAI10 小时前
无人零售智能柜适合哪些场景?
大数据·零售
南极企鹅11 小时前
MySQL间隙锁&临键锁
数据库·sql·mysql
yjcode78911 小时前
探索游戏充值新纪元:友价源码技术革新之旅
大数据·人工智能·游戏·游戏交易