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

相关推荐
小码哥哥8 分钟前
当企业软件开始“越界“:从单一工具到超级集合的架构演进
大数据·人工智能·架构
其美杰布-富贵-李9 分钟前
05 多分类任务中的评估指标:Binary Metrics 如何扩展到 Multi-class?
大数据·人工智能·分类
珐恩AI-人工智能20 分钟前
生成式引擎优化(GEO)全解:2026年AI检索时代企业长效流量运营方法论
大数据·人工智能·产品运营·流量运营·geo优化
天天爱吃肉82181 小时前
【工程师笔记|新能源整车电控一次过CISPR25/BCI,汽车EMC/EMI落地十大核心设计技巧】
大数据·人工智能·笔记·python·汽车
竹枝溪1 小时前
MySQL数据库零基础入门
数据库·sql·mysql·navicat·ddl·dml·dql
单词记忆方法研究1 小时前
探索上海背单词小程序品牌:高效学习工具的优化之路
大数据·学习·小程序
2601_957879331 小时前
没有视频团队的跨境电商,如何利用AI建立短视频内容生产体系?
大数据·人工智能
扶苏10021 小时前
同一个 Git 项目整出两份,切分支互不影响?两种方案实测
大数据·git·elasticsearch
zhongerzixunshi1 小时前
健全创新激励机制,激活企业发展内生动力
大数据·人工智能
7177772 小时前
软件工程工业化实践:Gitee 智能化软件工厂全链路标准化交付体系解析
大数据·gitee·软件工程