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

相关推荐
方向研究17 分钟前
质量因子策略
大数据
科研前沿34 分钟前
多视角相机驱动的室内人员空间定位技术白皮书
大数据·人工智能·python·科技·数码相机·音视频
阡陌..2 小时前
202605新版git_2.54.0常用操作指令
大数据·git·elasticsearch
fuquxiaoguang2 小时前
Cloudera 零拷贝连接器:不复制数据,也能让 AI 实时查询 ServiceNow
大数据·人工智能·cloudera
牛奶2 小时前
1秒下单10万次,服务器是怎么扛住的?
大数据·服务器·后端
逸Y 仙X2 小时前
文章二十四:Elasticsearch查询排序应用实战e
java·大数据·数据库·elasticsearch·搜索引擎·全文检索
无忧智库3 小时前
具身智能的数据底座之战:一个大规模三维空间语义语料库的完整工程实践(WORD)
大数据·人工智能
智慧化智能化数字化方案3 小时前
新零售——详解2025年度中国零售数字化及新技术应用创新案例【附全文阅读】
大数据·零售数字化·智慧零售美妆行业·智慧零售鞋服行业·智慧零售餐饮行业·慧零售食饮行业·智慧零售商超行业
Cx330❀3 小时前
Qt 入门指南:从零搭建开发环境到第一个图形界面程序
xml·大数据·开发语言·网络·c++·人工智能·qt
互联网志4 小时前
高校科技成果转化深度融入产业发展脉络
大数据·人工智能·物联网