Apache Spark 3.0.0重磅发布 —— 重要特性全面解析

2020年6月18日,开发了近两年(自2018年10月份至今)的Apache SparkTM 3.0.0正式发布!

Apache SparkTM 3.0.0版本包含3400多个补丁,是开源社区做出巨大贡献的结晶,在Python和SQL功能方面带来了重大进展并且将重点聚焦在了开发和生产的易用性上。同时,今年也是Spark开源10周年,这些举措反映了Spark自开源以来,是如何不断的满足更广泛的受众需求以及更多的应用场景。

首先来看一下Apache SparkTM 3.0.0主要的新特性:

  • 在TPC-DS基准测试中,通过启用自适应查询执行、动态分区裁剪等其他优化措施,相比于Spark 2.4,性能提升了2倍

  • 兼容ANSI SQL

  • 对pandas API的重大改进,包括python类型hints及其他的pandas UDFs

  • 简化了Pyspark异常,更好的处理Python error

  • structured streaming的新UI

  • 在调用R语言的UDF方面,速度提升了40倍

  • 超过3400个Jira问题被解决,这些问题在Spark各个核心组件中分布情况如下图:

在这里插入图片描述

此外,采用Spark3.0版本,主要代码并没有发生改变。

改进的Spark SQL引擎

Spark SQL是支持大多数Spark应用的引擎。例如,在Databricks,超过 90%的Spark API调用使用了DataFrame、Dataset和SQL API及通过SQL优化器优化的其他lib包。这意味着即使是Python和Scala开发人员也通过Spark SQL引擎处理他们的大部分工作。

如下图所示,Spark3.0在整个runtime,性能表现大概是Spark2.4的2倍:
在这里插入图片描述
接下来,我们将介绍Spark SQL引擎的新特性。

即使由于缺乏或者不准确的数据统计信息和对成本的错误估算导致生成的初始计划不理想,但是自适应查询执行(Adaptive Query Execution)通过在运行时对查询执行计划进行优化,允许Spark Planner在运行时执行可选的执行计划,这些计划将基于运行时统计数据进行优化,从而提升性能。

由于Spark数据存储和计算是分离的,因此无法预测数据的到达。基于这些原因,对于Spark来说,在运行时自适应显得尤为重要。AQE目前提供了三个主要的自适应优化:

  • 动态合并shuffle partitions


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部