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

相关推荐
暴躁小师兄数据学院20 分钟前
【AI大数据工程师特训笔记】第15讲:大数据环境安装
大数据·hadoop·flink·spark
挨踢诗人27 分钟前
领星ERP集成金蝶云星空
大数据·信息可视化
andafaAPS29 分钟前
安达发|汽车零部件行业aps生产排程:人工排产之困到智能调度之变
大数据·人工智能·汽车·aps生产排程·计划排产软件·自动排单软件
Promise微笑30 分钟前
精准微阻测量:微欧计的分类、场景应用与高效选型决策指南
大数据·运维·网络·人工智能
北风toto37 分钟前
本体和智能体协同核心5步骤(生成sql语句)
数据库·sql
QiLinkOS1 小时前
QiLink开源生态的三维重构:基于时间、空间与社会价值的底层规则创新白皮书
大数据·c++·人工智能·科技·算法·gitee·开源
qq_436962181 小时前
从“技术稀缺”到“人人可用”:奥威BI+AI如何复刻工业革命级变革
大数据·人工智能
运维小欣1 小时前
2026年AI 可观测平台选型指南
大数据·人工智能
数智化精益手记局1 小时前
拆解项目管理平台核心功能:看项目管理平台如何解决跨部门协作难题与多项目并行场景
大数据·运维·数据库·人工智能·产品运营
精益数智小屋1 小时前
拆解项目管理计划的核心功能:用项目管理计划解决跨部门协作难题
大数据·人工智能·数据分析·云计算·软件工程