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

相关推荐
俺不要写代码5 小时前
数据库:DQL
数据库·sql·mysql
学习3人组6 小时前
OEE(设备综合效率)的标准定义、公式、损失分类、以及在工位触屏/MES里怎么采集和统计
大数据·网络·数据库
财迅通Ai6 小时前
百通能源:2026年一季度营收稳步增长,资产结构持续优化
大数据·人工智能·能源·百通能源
千匠网络6 小时前
数智全链赋能,千匠网络钢铁能源供应链平台解决方案
大数据·人工智能
渣渣盟6 小时前
Spark 性能调优实战:从开发到生产落地
javascript·ajax·spark
WL_Aurora6 小时前
MapReduce经典例题【第一期】
大数据·mapreduce
Datakeji7 小时前
维恩波特Vairnport商业逻辑
大数据·人工智能·区块链
尚医云·云HIS7 小时前
从“21粒”误开,看AI如何补位处方安全
大数据·人工智能·健康医疗
摇滚侠7 小时前
黑马 Elasticsearch 全套教程,黑马旅游网案例
大数据·elasticsearch·jenkins
m0_380167148 小时前
清算热力图怎么看?如何用来判断行情走向
大数据·人工智能·区块链