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

相关推荐

  1. spark sql join

    2024-02-21 07:00:04       28 阅读
  2. spark group by ,join数据倾斜

    2024-02-21 07:00:04       29 阅读
  3. SparkSql Join Types详解

    2024-02-21 07:00:04       32 阅读
  4. Hive大表join大表如何

    2024-02-21 07:00:04       13 阅读
  5. jvm 方式

    2024-02-21 07:00:04       15 阅读
  6. 【JVM】虚拟机 常用参数

    2024-02-21 07:00:04       18 阅读
  7. JVM 21 指南:如何进行JVM,JVM参数

    2024-02-21 07:00:04       41 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-21 07:00:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-21 07:00:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-21 07:00:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-21 07:00:04       18 阅读

热门阅读

  1. 基于opencv的SIFT特征提取

    2024-02-21 07:00:04       28 阅读
  2. NPM运行保存问题解决

    2024-02-21 07:00:04       27 阅读
  3. 整型数组按个位值排序/最低位排序(C语言)

    2024-02-21 07:00:04       33 阅读
  4. k8s集群5个故障案例分析

    2024-02-21 07:00:04       32 阅读
  5. 【npm】常见错误

    2024-02-21 07:00:04       28 阅读
  6. 分布式场景怎么Join | 京东云技术团队

    2024-02-21 07:00:04       29 阅读