Apache Spark 3.0 发布

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 引擎中的主要新功能。

自适应查询执行(Adaptive Query Execution)

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

动态分区修剪 (Dynamic Partition Pruning)

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

Spark 3.0 中的其他更新

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

优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/news/116598/apache-spark-3-0-released

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。