Apache Spark 3.0 发布,包含3400 多个补丁,TPC-DS 性能提升2倍。

偷懒的程序员 2020-06-22 15:51:21 ⋅ 105 阅读

简介

Databricks 上周发布了 Apache Spark 3.0,并将此作为新版 Databricks Runtime 7.0 的一部分。3.0.0 版本包含 3400 多个补丁,为 Python 和 SQL 功能带来了重大进展。

Spark 是用于大数据处理,数据科学,机器学习和数据分析等领域的统一引擎。

Spark 3.0 重要变化:

  • 与 Spark 2.4 相比,TPC-DS 的性能提升了2倍,主要通过自适应查询执行动态分区修剪和其他优化实现

  • 兼容 ANSI SQL

  • 针对 pandas API 的重大改进,包括 Python 类型提示和额外的 pandas UDF

  • 改进 Python 错误处理,简化 PySpark 异常提醒

  • 为结构化流(structured streaming)提供新 UI

  • 调用 R 语言自用户定义函数(User-Defined Function)的速度可提高 40 倍

  • 解决了 Jira 上 3400 多个 issue,这些 issue 的分布情况如下图所示

改进 Spark SQL 引擎

Spark SQL 是支持大多数 Spark 应用程序的引擎。在 Spark 3.0 中,46% 的补丁被应用于 SQL,提升了性能和 ANSI 兼容性。如下图所示,Spark 3.0 的性能大约是 Spark 2.4 的 2 倍


Spark SQL 引擎中的主要新功能

新的自适应查询执行(AQE) 框架通过在运行时生成更好的执行计划来提高性能并简化调整,即使由于缺少或使用不正确的数据统计信息和错误估计的成本而致使初始计划不理想时,也是如此。此版本引入了三个主要的自适应优化:动态合并 shuffle 分区可简化甚至避免调整 shuffle 分区的数量、动态切换连接策略部分避免了由于缺少统计信息或错误估计大小而导致执行次计划的情况,以及动态优化倾斜连接(optimizing skew joins )。

动态分区修剪 (Dynamic Partition Pruning)

当优化器无法在编译时识别其可以跳过的分区,将会应用“动态分区修剪”功能。这在星型模式中很常见,星型模式由一个或多个事实表组成,这些事实表引用了任意数量的维度表。在执行这种联接操作中,我们可以通过识别维度表过滤之后的分区来修剪联接从事实表中读取的分区。在 TPC-DS 基准测试中,102 个查询中有 60 个查询获得 2 到 18 倍的显着加速。

Spark 3.0 中的其他更新

Spark 3.0 除了在 SQL,Python 和流技术方面包含部分关键改进,还提供了许多其他的新功能。详情查看发布说明,发现对 Spark 的所有其他改进,包括数据源、生态系统和监视等。





全部评论: 0

    我有话说:

    重磅官宣:Nacos2.0发布性能提升10

    继 Nacos 1.0 发布以来,Nacos 迅速被成千上万家企业采用,并构建起强大的生态。但是随着用户深入使用,逐渐暴露一些性能问题,因此我们启动了 Nacos 2.0 的隔代产品设计,时隔半年

    Apache HBase 2.3.2 发布,分布式存储系统

    Apache HBase 2.3.2 已经发布。HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用 HBase 技术可在廉价 PC

    Apache Camel 3.6.0 发布,集成项目工具

    简介 Apache Camel 作为集成项目的利器,针对应用集成场景的抽象出了一套消息交互模型,通过组件的方式进行第三方系统的接入,目前 Apache Camel 已经提供300 多种

    「尝鲜」SpringBoot 快速整合Swagger 3.0

    第一步:Maven引入Swagger3.0 starter依赖 Maven项目中引入springfox-boot-starter依赖: <dependency> <

    JavaScript 引擎 V8 发布 8.3 版本,性能提升

    JavaScript 引擎 V8 发布了 8.3 版本

    Apache Arrow 3.0.0 发布,内存数据交换格式

    Apache Arrow 3.0.0 发布了,该版本包含 2.0.0 发布以来修复的 678 问题。Apache Arrow 是 Apache 基金会的顶级项目之一,目的是作为一个跨平台的数据层来

    Apache Beam 2.25.0 发布,大数据流处理与批处理编程范式

    Apache Beam 2.25.0 发布了。Beam 是一个用于定义和执行数据处理管道的统一编程模型,包括 ETL、批处理与流处理。Beam 项目重点在于数据处理的编程范式和接口定义,并不涉及具体

    dubbogo v1.5.6 发布性能提升并带来项新特性

    dubbogo 社区近期发布了 dubbogo v1.5.6。该版本和 dubbo 2.7.8 对齐,提供了命令行工具,并提供了多种加载配置的方式。 相关改进实在太,本文只列出相关重大

    Bootstrap 图标集 v1.2.0 发布-包含数十新图标

    我们最新的 Bootstrap Icons 发布包含数十新图标、重新设计的文档和呼声最高的新特性 —— 图标字体! 新的社交网络图标 我们的社交图标工作一开始比较慢 —— 人们可能只

    Apache Tomcat 8.5.59、9.0.39和10.0.0-M9发布

    Apache Tomcat 8.5.59, 9.0.39 和 10.0.0-M9 已发布。 8.5.x 已取代 8.0.x,并增加了从 Tomcat 9.0.x 中吸收的新功能。与 8.5.58

    Apache IoTDB 0.11.2 发布,物联网时序数据库

    Apache IoTDB 0.11.2 现已发布Apache IoTDB 是一个集成数据专为时间序列数据设计的管理引擎。它为用户提供以下服务:数据收集、存储和分析。由于其轻巧的结构,高

    2018 国产开源软件新秀Kooteam 0.1.2 发布,解决低配服务器性能问题

    KooTeam是一款轻量级的在线团队协作工具,提供各类文档工具、在线思维导图、在线流程图、项目管理、任务分发,知识库管理等工具。

    Gradle 5.0 RC2 发布,支持 Java 11、Kotlin DSL 生产就绪

    Gradle 5.0 RC2 发布了,Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化构建工具,支持依赖管理和项目,类似 Maven,但比之简单轻便。

    Spring Boot 2.4.0-RC1, 2.1.18, 2.2.11 和 2.3.5 发布

    Spring Boot 分支发布了新版本,分别是 2.4.0-RC1, 2.1.18, 2.2.11 和 2.3.5。 Spring Boot 2.4.0-RC1 此版本是 

    Chrome 87 发布,获多年来最大性能提升

    Chrome 87 正式版现已发布。谷歌方面表示,由于进行了许多底层改进,本月的更新代表了年来 Chrome 性能的最大提升。 此版本包含的一些更新内容有: 现在,Chrome 会优先

    Apache Camel 3.7.3 发布

    Apache Camel 3.7.3 已经发布Apache Camel 是一个开源的集成框架,可以帮助用户迅速而方便地整合各种系统消耗或生产数据。本次更新是 LTS 3.7.x 分支的修补程序版本