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

相关推荐
卡梅德生物科技7 分钟前
卡梅德生物科普:CD140a(PDGFRα)靶点深度解析:机制、药物研发与未来趋势
大数据·人工智能·面试·职场和发展·学习方法
funkygroove11 分钟前
研发与市场决策难题解析:如何用结构化数据破解信息不对称
大数据·医药数据库
pupudawang17 分钟前
SQL-触发器(trigger)的详解以及代码演示
服务器·数据库·sql
IT研究所31 分钟前
从工单到智能分析:AIGC运维助手应用价值
大数据·运维·数据库·人工智能·科技·低代码·自动化
不过普通话一乙不改名36 分钟前
十二:InnoDB MVCC(多版本并发控制)
sql
正在走向自律41 分钟前
大数据时代时序数据库选型指南:Apache IoTDB为何成为工业物联网首选
大数据·时序数据库·iotdb
生活予甜1 小时前
MINISH科技宣布迈向健康科技企业的新阶段
大数据·人工智能·科技
V搜xhliang02461 小时前
自然语言理解与语音识别(ASR)
大数据·人工智能·机器学习·自然语言处理·机器人·语音识别·xcode
jerryinwuhan1 小时前
Spark数据分析1_环境配置
大数据·数据分析·spark
V_vvVz1 小时前
Infoseek:以智能舆情监测,为企业品牌筑牢安全防线
大数据·人工智能·科技