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

相关推荐
weikecms3 分钟前
企微支持聚合聊天的 SCRM 工具推荐
大数据
CIO_Alliance6 分钟前
边缘智联,集成无界:边缘计算与iPaaS系统集成的融合之道
大数据·边缘计算·ipaas·系统集成·制造业·企业数智化转型·选型指南
企微增长观察9 分钟前
2026企业微信AI SCRM实测:微盛·企微管家全行业私域运营
大数据·人工智能·企业微信
Aloudata13 分钟前
构建全场景指标服务:基于 NoETL 语义编织与开放 API/JDBC 生态的实践
大数据·数据分析·agent·指标平台
飞飞传输16 分钟前
内外网文件交换系统产品推荐:高密网低密网摆渡更安全高效
大数据·运维·安全
今儿敲了吗18 分钟前
数据库(四)——关系数据库SQL语言
数据库·笔记·sql
麦聪聊数据20 分钟前
SQL与数据库开发(二):用 CTE 重构嵌套查询与处理树形结构
sql·数据库开发
麦聪聊数据24 分钟前
SQL与数据库开发(一):用窗口函数替代应用层的嵌套循环
数据库·sql·数据库开发
TENSORTEC腾视科技25 分钟前
让安全驾驶有“AI”相伴|腾视科技DMS视频监控一体机,守护每一次出行
大数据·人工智能·科技·安全·ai·零售·无人叉车及智能调度系统解决方案