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

相关推荐
AgentMaster32 分钟前
智能客服多渠道接入,5 款产品的全渠道整合能力对比与实战
大数据·人工智能·算法
程序员IT行业9 小时前
化工原料进销存安全管控数字化方案|解决危化品台账混乱、效期严控、分次发货溯源难题
大数据
bbq粉刷匠12 小时前
触发器(下):事务与锁、binlog 一致性与替代方案
sql
CNSSIRD数据库12 小时前
中国企业环境信用数据库2003-2026
大数据·数据库·数据分析·论文笔记
大大大大晴天12 小时前
每天认识一个组件:数据集成Apache SeaTunnel
大数据
广州宏帝箱包13 小时前
出口箱包的包装标准:防潮、防摔、运输安全的设计要点
大数据·网络
Geeys13 小时前
拼多多新店起流玩法:免费流量打底+付费流量爆发
大数据
浅念-13 小时前
Redis基础详解:单线程模型、String与Hash数据结构
服务器·数据库·redis·sql·mysql·nosql数据库·nosql
日常筹谋记13 小时前
自动化仓储安全防护工况评估:明治传感器AS-33C技术适配性分析
大数据·运维·创业创新·业界资讯