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

相关推荐
Data_Journal6 分钟前
如何使用 Python 解析 JSON 数据
大数据·开发语言·前端·数据库·人工智能·php
威胁猎人14 分钟前
【黑产大数据】2025年全球KYC攻击风险研究报告
大数据·区块链
迎仔22 分钟前
00-大数据技术体系总览:大数据世界的“城市蓝图”
大数据
xixixi7777735 分钟前
互联网和数据分析中的核心指标 DAU (日活跃用户数)
大数据·网络·数据库·数据·dau·mau·留存率
绝缘体11 小时前
如何使用外卖霸王餐api接口?
大数据·搜索引擎·微信·pygame
中二病码农不会遇见C++学姐2 小时前
SQLiteStudio 下载安装指南
sql
一碗面4212 小时前
SQL性能优化:让数据库飞起来
数据库·sql·性能优化
幂链iPaaS2 小时前
市场六大专业iPaaS平台怎么选
大数据·人工智能
June bug2 小时前
【高频SQL基础版】排序和分组
数据库·sql
珠海西格2 小时前
光伏电站全景感知体系:数据采集与设备状态监测技术
大数据·运维·服务器·数据库·人工智能