深入研究 Apache Spark 3.0 的新功能

Apache Spark 3.0带来了显著的性能改进,包括Adaptive Query Execution(AQE)、Dynamic Partition Pruning和Join Hints等。AQE允许Spark根据运行时信息动态优化查询计划,解决Broadcast Hash Join和数据分布不均等问题。此外,Spark3.0还增强了API,如pandas UDF的改进和Accelerator-aware Scheduler,提供了更好的监控和调试能力,以及SQL兼容性和内置数据源的增强。Koalas作为PySpark的补充,使得pandas用户可以无缝处理大数据。
摘要由CSDN通过智能技术生成

分享嘉宾 Apache Spark PMC 李潇,就职于 Databricks,Spark 研发部主管,领导 Spark,Koalas,Databricks runtime,OEM 的研发团队,在直播中为大家深入讲解了Apache Spark 3.0的新功能。

直播回放:https://developer.aliyun.com/live/2894

以下是直播内容精华整理。


Spark3.0解决了超过3400个JIRAs,历时一年多,是整个社区集体智慧的成果。Spark SQL和Spark Cores是其中的核心模块,其余模块如PySpark等模块均是建立在两者之上。Spark3.0新增了太多的功能,无法一一列举,下图是其中24个相对来说比较重要的新功能,下文将会围绕这些进行简单介绍。

一、Performance

与性能相关的新功能主要有:

  • Adaptive Query Execution

  • Dynamic Partition Pruning

  • Query Complication Speedup

  • Join Hints

(一)Adaptive Query Execution

Adaptive Query Execution(AQE)在之前的版本里已经有所实现,但是之前的框架存在一些缺陷,导致使用不是很多,在Spark3.0中Databricks(Spark初创团队创建的大数据与AI智能公司)和Intel的工程师合作,解决了相关的问题。

在Spark1.0中所有的Catalyst Optimizer都是基于规则 (rule) 优化的。为了产生比较好的查询规则,优化器需要理解数据的特性,于是在Spark2.0中引入了基于代价的优化器 (cost-based optimizer),也就是所谓的CBO。然而,CBO也无法解决很多问题,比如:

  • 数据统计信息普遍缺失,统计信息的收集代价较高;

  • 储存计算分离的架构使得收集到的统计信息可能不再准确;

  • Spark部署在某一单一的硬件架构上,cost很难被估计;

  • Spark的UDF(User-defined Function)简单易用,种类繁多,但是对于CBO来说是个黑盒子,无法估计其cost。

总而言之,由于种种限制,Spark的优化器无法产生最好的Plan。也正是因为上诉原因,运行期的自适应调整就变得相当重要,对于Spark更是如此,于是有了AQE,其基本方法也非常简单易懂。如下图所示,在执行完部分的查询规划后,Spark可以收集到结果的统计信息,然后利用这些信息再对查询规划重新进行优化。这个优化的过程不是一次性的,而是自适应的,也就是说随着查询规划的执行会不断的进行优化, 而且尽可能地复用了现有优化器的已有优化规则。让整个查询优化变得更加灵活和自适应。

Spark3.0中AQE包括三个主要的运行期自适应功能:

  • 可以基于运行期的统计信息,将Sort Merge Join 转换为Broadcast Hash Join;

  • 可以基于数据运行中间结果的统计信息,减少reducer数量,避免数据在shuffle期间的过量分区导致性能损失;

  • 可以处理数据分布不均导致的skew join。

更多的信息大家可以通过搜索引擎查询了解。

如果你是一个Spark的资深用户,可能你读了很多的调优宝典,其中第一条就是让你的Join变得更快的方法就是尽可能地使用Broadcast Hash Join。比如你可以增加spark.sql.autoBroadcastJoinThreshold 阈值,或者使用 broadcast HINT。但是这基本上属于艺高人胆大。首先,这种方法很难调,一不小心就会Out of Memory,甚至性能变得更差,即使现在产生了一定效果&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值