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

相关推荐
Leo.yuan1 小时前
AI辅助数据分析:如何让分析效率提升85%?
大数据·人工智能
瀚高PG实验室2 小时前
SQL优化案例:使用分区表优化SQL查询性能
linux·服务器·数据库·sql·microsoft·postgresql
Sayai2 小时前
Elasticsearch 压测利器 esrally 从安装到跑分全流程
大数据·elasticsearch·搜索引擎
科技发布3 小时前
传播易整合商圈媒体,商场停车场灯箱广告高效落地
大数据·人工智能·媒体
今天AI了吗3 小时前
从聊天到委派:AI Agent 如何推进长期任务
数据库·人工智能·python·sql·rust
MindUp3 小时前
大模型在命理排盘场景下的多平台功能对比与工程化思考
大数据·人工智能
小刘快学习3 小时前
印刷包装企业的工艺问答与报价,为什么从直连模型改成了聚合网关
大数据·人工智能
大模型探索者4 小时前
2026零售与电子商务大模型训推平台选型指南:大促高并发与极致算力降本破局
大数据·人工智能·零售
WA内核拾荒者4 小时前
WhatsApp账号运营SOP的可视化编排与流水线监控
大数据·数据库·windows
楷哥爱开发4 小时前
目标国家 IP 会影响 TikTok、Instagram 的内容分发和受众地区吗?
大数据·运维·tcp/ip