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

相关推荐
Nile5 小时前
解密Palantir系列二:1.Foundry · 数据操作系统
大数据·人工智能·ai·ai编程·ai-native
serve the people5 小时前
Elasticsearch(4) show me some more advanced content
大数据·elasticsearch·jenkins
跨境数据猎手15 小时前
大数据在电商行业的应用
大数据·运维·爬虫
绿算技术16 小时前
万卡推理集群存储选型分析:从核心架构到应用视角
大数据·科技·算法·架构
朴马丁18 小时前
预制菜的“数字厨房”:PLM如何支撑菜品标准化与供应链高效协同?
大数据·人工智能·食品行业·流程行业plm
奋斗的老史19 小时前
Spring-Boot 集成 TDengine 完整实战
大数据·时序数据库·tdengine
持敬chijing20 小时前
Web渗透之SQL注入-二次注入(Second-Order SQL Injection)
sql·安全·web安全·网络安全·网络攻击模型·安全威胁分析
郑洁文20 小时前
音乐数据分析研究与应用
大数据·数据挖掘·数据分析·音乐数据分析
成长之路51420 小时前
【实证分析】地市环境规制综合指数测算-原始数据+do代码(2011-2024年)
大数据
逸模21 小时前
AI+BIM 重构连锁公装新范式 逸模打造数字化营建核心底座
大数据·人工智能·笔记·其他·信息可视化·重构