前言
Apache Spark在6月份分布了3.0.0版本,增加了许多性能优化方面的新特性。作为大数据分析的重要引擎,在SQL查询优化方面的新特性值得期待和使用。Spark在SQL查询方面的性能优化主要分为四个方向七个方面:
开发交互方向
- 新的Explain格式
- 所有join支持hints
动态优化
- 自适应查询执行
- 动态分区裁剪
Catalyst提升
- 增强嵌套列的裁剪和下推
- 增强聚合的代码生成
基础设施更新
- 支持新的Scala和Java版本
新特性介绍
这7个方面最值得关注的在于动态优化方向的更新,下面来着重讲一下。
自适应查询执行
自适应查询执行通过使用运行时的统计信息进行三个方面的优化:
- 根据统计信息设置reducer的数量来避免内存和I/O资源的浪费
Spark2.4的版本中,Reducer的个数是通过配置文件中的shuffle.partition来设置的,如图有五个分区就有五个reducer来进行处理,由上图可以看到,reducer0的任务量较小