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

相关推荐
sxwuyanzu2 小时前
DeepSeek冲IPO-谁在为它付钱-公众号发布稿
大数据·人工智能·科技
子非鱼a2 小时前
【SQL注入】 ShadowCart
sql
邱海龙3 小时前
丘孔人工智能最前沿2026年9月12日:DeepSeek V4.1 Flash 正式发布,百万上下文接棒 V4 Pro
大数据
西木莉3 小时前
大数据落地六规则:先建数据灯塔,再谈技术革命
大数据
程序员阿鹏3 小时前
如何实现MySQL分库分表?
数据结构·数据库·sql·mysql·缓存
liangsheng_g4 小时前
Spring事务传播行为分派与挂起恢复源码实战
数据库·sql·spring
CIO_Alliance4 小时前
AI微调系列(2)| QLoRA:一张卡微调700亿参数,显存是怎么省下来的
大数据·人工智能·深度学习·ai·企业ai转型·企业cio联盟
远航计算机4 小时前
网站被 AI 收录要多久?从被抓取到被引用的完整时间表
大数据·人工智能·aigc
来了就不要走5 小时前
亿数平台怎么样:亿象生态与数实融合路径观察
大数据·人工智能·区块链
杨云龙UP5 小时前
MySQL Host is blocked because of many connection errors 导致 JDBC 连接失败排查与解决
linux·运维·网络·数据库·sql·mysql·登录失败