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 分钟前
14【.NET10 实战--孢子记账--产品智能化】--智能生成预算
大数据·人工智能·.net
zuYM4g7Dp22 分钟前
文顶顶iOS开发数据库篇—SQL
数据库·sql·ios
稷下元歌25 分钟前
七天学会plc加机器视觉之AI 接入 外设模块开发全详细操作文档(全程配套视频按文档实操)
python·sql·qt·贪心算法·r语言·wpf·时序数据库
Deepoch27 分钟前
Deepoc VLA开发板:实现采摘机器人动态生物适应与精准作业
大数据·人工智能·机器人·采摘机器人·deepoc
申通之声32 分钟前
3年稳定率90%+:申通五星管理经
大数据·人工智能·交通物流
tedcloud12336 分钟前
FluentFlyout部署教程:打造更美观的Windows桌面环境
数据库·人工智能·sql·学习·自动化
C137的本贾尼1 小时前
幻读与 Next-Key Lock:可重复读隔离级别如何解决幻读
大数据·数据库
郑洁文1 小时前
达州市人口相关数据分析与应用
大数据·数据挖掘·数据分析·毕设·达州市人口
YangYang9YangYan1 小时前
2026文科生报考大数据类专业学习数据分析的可行性分析
大数据·学习·数据分析
知识分享小能手1 小时前
Hadoop学习教程,从入门到精通, 初识Hadoop — 知识点详解(1)
大数据·hadoop·学习