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

相关推荐
河码匠2 分钟前
Elasticsearch 常用请求说明
大数据·elasticsearch·搜索引擎
petrel20155 分钟前
【Spark】性能与联通性的终极博弈:Spark on K8s 主机网络改造深度实战
大数据·网络·spark·kubernetes·claude code
小哥哥咯7 分钟前
数据仓库维度建模思维导图—— 基于《The Data Warehouse Toolkit, 3rd Edition》(第三版修订版)
大数据·数据仓库
Moshow郑锴8 分钟前
Spark与Prophecy综合比较&&推荐Prophecy的理由
大数据·分布式·spark
图特摩斯科技11 分钟前
本体建模平台 OntoFlow & Palantir Ontology:从“数据实体”到“可执行本体”的企业落地路径
大数据
萤丰信息13 分钟前
物联网+AI技术落地:重构园区管理新模式,激活产业发展新动能
大数据·人工智能·科技·物联网·重构·智慧园区
Z1eaf_complete20 分钟前
SQL注入绕过详解与防御机制
数据库·sql
Qzkj66631 分钟前
从风险失控到全程可控:高效好用、无故障、先进的金融API安全方案
大数据·安全·金融
2401_8658548836 分钟前
腾讯云龙虾大模型API配置:一键解锁AI算力,赋能业务高效升级
大数据·人工智能·腾讯云
CN.LG41 分钟前
SQLiteStudio 介绍
sql·sqlite·c#