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

相关推荐
samFuB1 天前
【实证分析】省级农产品出口技术复杂度数据-含代码(2004-2024年)
大数据
samFuB1 天前
【数据集】中国31个省农村用电量-含dta及xlsx(1978-2024年)
大数据
成长之路5141 天前
【数据集】上市公司企业组织惯性数据(2012-2024年)
大数据
Tigerbot1 天前
虎博科技CEO卢鑫:GEO方法论提出者,AI Marketing 与 AI GEO专家
大数据·人工智能·科技
alxraves1 天前
医疗器械质量管理体系信息系统的详细设计
大数据·安全·健康医疗·制造
xcbrand1 天前
快消品品牌策划公司哪家好
大数据·人工智能·python
T06205141 天前
【实证分析】上市公司企业交易成本数据集-含代码(2000-2024年)
大数据
智慧景区与市集主理人1 天前
露营设备租赁低效?巨有科技计时租赁系统激活五一增收新动能
大数据·人工智能
@土豆1 天前
Elasticsearch 9.0.1 集群部署(Docker Compose + k8s 部署方式)
大数据·elasticsearch·docker
醉颜凉1 天前
Elasticsearch 生产级核心原理:Shard Allocation Awareness 工作机制与实战配置详解
大数据·elasticsearch·搜索引擎