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

相关推荐
团象科技15 小时前
跨境出海业务频繁卡壳时,免实名云账号容易踩哪些坑
大数据·人工智能
薪火铺子16 小时前
ElasticSearch 集群原理与分片管理深度解析
大数据·elasticsearch·搜索引擎
数说故事16 小时前
数说故事消费者洞察:全域大数据解析电解质饮料日常水替新趋势
大数据·数说故事·消费者洞察
TDengine (老段)16 小时前
TDengine 整体架构全景 — 深度解析
大数据·数据库·物联网·架构·时序数据库·tdengine·涛思数据
m0_7162550016 小时前
二、Hadoop 面试必背 | 三、Hive 面试必背
大数据·hadoop·面试
zz07232016 小时前
Elasticsearch
大数据·elasticsearch·搜索引擎
薪火铺子16 小时前
ElasticSearch 聚合查询与性能优化实战
大数据·elasticsearch·性能优化
l1t16 小时前
DeepSeek总结的无需编译器:编写纯 SQL 的 Postgres 扩展
数据库·sql·postgresql
CableTech_SQH16 小时前
F5G全光网络二层扁平架构技术拆解:OLT+ODN+ONU全链路原理详解
大数据·网络·5g·信息与通信
2601_9499369616 小时前
2026年职业资格证书趋势分析:专业化与数字化融合视角
大数据