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

相关推荐
tang777892 分钟前
哪些行业用动态代理ip?哪些行业用静态代理IP?怎样区分动态ip和静态ip?(互联网人必码·实用长文)
大数据·网络·爬虫·python·网络协议·tcp/ip·智能路由器
九硕智慧建筑一体化厂家22 分钟前
DDC:看似普通的存在,在楼宇自控系统中却主宰智能建筑高效运行?
大数据·运维·人工智能·网络协议·制造·设计规范
Apache Flink35 分钟前
(二)走进阿里云实时计算Flink版|场景案例篇
大数据·阿里云·flink·云计算
Y001112361 小时前
Day3-MySQL-SQL-2
数据库·sql·mysql
laozhao4321 小时前
浪潮298.00万中标甘肃能源化工集团财务信息化系统项目
大数据·人工智能
北京软秦科技有限公司1 小时前
IACheck助力能源电力检测报告智能审核:AI报告审核提升质量与效率
大数据·人工智能·能源
大尚来也1 小时前
渲染性能的隐形守护者:深度解析虚拟DOM的运作机制与优化哲学
大数据
V1ncent Chen1 小时前
从零学SQL 07 数据过滤
数据库·sql·mysql·数据分析
大大大大晴天1 小时前
Flink生产问题排障-DAG膨胀导致JobManagerOOM
大数据·flink
GEO_Huang1 小时前
企业转型无从下手?数谷的定制化 AI 方案能否指点迷津?
大数据·人工智能·aigc·rpa·geo·企业智能体定制·企业ai定制