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

相关推荐
TDengine (老段)28 分钟前
TDengine IDMP 数据可视化 6. 资产列表
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
天辛大师28 分钟前
天辛大师最新著作命理学三千问与AI全息智能体(首发)
大数据·人工智能·决策树·随机森林·启发式算法
档案宝档案管理35 分钟前
从台账到检索,全面提升档案管理的便捷性和安全性
大数据·人工智能·档案·档案管理
Elastic 中国社区官方博客35 分钟前
使用 Elasticsearch 和 LLMs 进行实体解析,第 1 部分:为智能实体匹配做准备
大数据·人工智能·elasticsearch·搜索引擎·全文检索
ℳ₯㎕ddzོꦿ࿐39 分钟前
[特殊字符] 【踩坑记录】没调 startPage(),SQL 却被自动分页了?
数据库·sql
SQL必知必会44 分钟前
SQL 描述性统计:超越平均值和计数
数据库·sql
数新网络1 小时前
数新智能 CyberEngine 大数据引擎管理平台焕新升级
大数据
ActionTech1 小时前
数据集推荐 06 | 首款 NL2GeoSQL 的测试基准和数据集来了!
数据库·人工智能·sql
码云数智-大飞1 小时前
跳出索引思维定式:一次基于业务逻辑的非典型 SQL 优化实践
数据库·sql
WZgold1411 小时前
新手入门:预判黄金行情需参考哪些关键数据?
大数据·经验分享