Spark 3.0新特性介绍

1. 自适应查询优化

这是 Databricks 和Intel 中国团队在做的项目(https://tinyurl.com/y3rjwcos),基于已完成的执行计划节点的统计数据,优化剩余的查询执行计划,它的特点是:

  • 减少 Reducer 的数量
  • 将 Sort Merge Join 转换为 Broadcast Hash Join
  • 处理数据倾斜

2. 动态分区修剪

静态分区裁剪优化

Spark 3.0新特性介绍

Spark 3.0新特性介绍Spark 3.0新特性介绍

动态分区裁剪优化

  • spark.sql.optimizer.dynamicPartitionPruning.enabled 参数必须设置为 true,不过这个值默认就是启用的;
  • 需要裁减的表必须是分区表,而且分区字段必须在 join 的 on 条件里面;
  • Join 类型必须是 INNER, LEFT SEMI (左表是分区表), LEFT OUTER (右表是分区表), or RIGHT OUTER (左表是分区表)。
  • 满足上面的条件也不一定会触发动态分区裁减,还必须满足 spark.sql.optimizer.dynamicPartitionPruning.useStats 和 spark.sql.optimizer.dynamicPartitionPruning.fallbackFilterRatio 两个参数综合评估出一个进行动态分区裁减是否有益的值,满足了才会进行动态分区裁减。

 

Spark 3.0新特性介绍

Spark 3.0新特性介绍

 

3. Spark on Kubernetes

Spark 3.0 在 Kubernetes 上有更多的功能:

  • 支持使用 pod 模板来定制化 driver 和 executor 对应的 pods
  • 支持动态资源申请,资源空闲的时候,减少 executor 数量,资源紧张的时候,动态的加入一些 executor
  • 支持外置的 shuffle 服务,将 shuffle 服务放在独立的 pod 里,能够解耦成一个架构

4.支持 Hadoop 3.x