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

相关推荐
℡終嚸♂68017 小时前
SQL 注入与 ThinkPHP 漏洞技术讲义
数据库·sql
AI先驱体验官17 小时前
BotCash:AI智能体变现从小 Demo 到商业产品的距离
大数据·人工智能·深度学习·重构·aigc
AcrelGHP17 小时前
安科瑞AIM-T系列工业IT绝缘监测及故障定位解决方案为关键供电场所筑牢安全防线
大数据·运维·数据库
csgo打的菜又爱玩17 小时前
2.Flink RPC通信流程解析
大数据·rpc·flink
好多渔鱼好多18 小时前
【AI编程工具】Amazon Q Developer:从CodeWhisperer到云原生AI王者的进化
大数据·人工智能
网教盟人才服务平台1 天前
“方班预备班盾立方人才培养计划”正式启动!
大数据·人工智能
TDengine (老段)1 天前
TDengine IDMP 可视化 —— 分享
大数据·数据库·人工智能·时序数据库·tdengine·涛思数据·时序数据
运维行者_1 天前
OpManager MSP NetFlow Analyzer集成解决方案,应对多客户端网络流量监控挑战
大数据·运维·服务器·网络·数据库·自动化·运维开发
不剪发的Tony老师1 天前
Noir:一款键盘驱动的现代化数据库管理工具
数据库·sql
极创信息1 天前
信创系统认证服务怎么做?从适配到验收全流程指南
java·大数据·运维·tomcat·健康医疗