我们激动地宣布,作为Databricks运行时7.0的一部分,可以在Databricks上使用Apache SparkTM 3.0.0版本。3.0.0版本包含超过3400个补丁,是开源社区做出巨大贡献的顶峰,带来了Python和SQL功能方面的重大进步,并关注于开发和生产的易用性。这些举措反映了该项目如何发展,以满足更多的用例和更广泛的受众,今年是它作为一个开源项目的10周年纪念日。

以下是Spark 3.0最大的新特性:

TPC-DS比Spark 2.4的性能提高了2倍,支持自适应查询执行、动态分区剪枝和其他优化

ANSI SQL合规

对panda api进行了重大改进,包括Python类型提示和额外的panda udf

更好的Python错误处理,简化PySpark异常

结构化流的新UI

调用R用户定义函数的速度可达到40x

3400多张Jira票已经解决

采用这个版本的Apache Spark不需要做大的代码更改。有关更多信息,请查看迁移指南。

庆祝Spark发展和演变的10年

Spark的前身是加州大学伯克利分校的AMPlab实验室,这是一个专注于数据密集型计算的研究实验室。AMPlab的研究人员与大型互联网公司合作研究他们的数据和人工智能问题,但是他们发现这些同样的问题也会被所有拥有大量且不断增长的数据的公司所面临。该团队开发了一个新的引擎来处理这些新兴的工作负载,同时使开发人员更容易访问用于处理大数据的api。

社区的贡献很快就加入进来,将Spark扩展到不同的领域,提供了围绕流、Python和SQL的新功能,这些模式现在构成了Spark的一些主要用例。这种持续的投资为它带来了今天的火花,成为数据处理、数据科学、机器学习和数据分析工作负载事实上的引擎。Apache Spark 3.0延续了这一趋势,显著改进了对SQL和Python(目前Spark使用最广泛的两种语言)的支持,并对Spark其余部分的性能和可操作性进行了优化。

改进Spark SQL引擎

Spark SQL是支持大多数Spark应用程序的引擎。例如,在Databricks上,我们发现超过90%的Spark API调用使用DataFrame、Dataset和SQL API以及其他由SQL优化器优化的库。这意味着即使是Python和Scala开发人员也要通过Spark SQL引擎来传递他们的大部分工作。在Spark 3.0版本中,46%的补丁是针对SQL的,从而提高了性能和ANSI兼容性。如下所示,Spark 3.0在运行时的总体性能大约比Spark 2.4好2倍。接下来,我们将解释Spark SQL引擎中的四个新特性。

新的自适应查询执行(AQE)框架通过在运行时生成更好的执行计划来改进性能和简化调优,即使初始计划由于缺乏/不准确的数据统计和错误估计的成本而不是最优的。由于Spark中的存储和计算分离,数据到达可能是不可预测的。由于所有这些原因,与传统系统相比,Spark的运行时适应性变得更加关键。这个版本引入了三个主要的自适应优化:

动态合并洗牌分区可以简化甚至避免调整洗牌分区的数量。用户可以在开始时设置相对大量的转移分区,然后AQE可以在运行时将相邻的小分区合并为较大的分区。

动态切换连接策略可以部分避免执行由于缺少统计信息和/或大小估计错误而导致的次优计划。这种自适应优化可以在运行时自动将排序合并连接转换为广播散列连接,从而进一步简化调优并提高性能。

动态优化倾斜连接是另一个关键的性能增强,因为倾斜连接会导致工作的极度不平衡并严重降低性能。在AQE从shuffle文件统计数据中检测到任何倾斜后,它可以将倾斜分区分割成更小的分区,并将它们与另一端的相应分区连接起来。该优化可以并行化倾斜处理,获得更好的整体性能。

基于3TB的TPC-DS基准测试,与没有AQE相比,Spark与AQE可以对两个查询产生超过1.5倍的性能加速,对另外37个查询产生超过1.1倍的性能加速。

当优化器在编译时无法识别它可以跳过的分区时,将应用动态分区剪枝。

这在星型模式中并不少见,星型模式由一个或多个事实表组成,这些表引用任意数量的维度表。在这样的连接操作中,我们可以通过标识那些过滤维度表的分区来删除连接从事实表中读取的分区。在TPC-DS基准测试中,102个查询中有60个查询的速度显著提高了2倍到18倍。

ANSI SQL遵从性对于从其他SQL引擎到Spark SQL的工作负载迁移至关重要。

为了提高兼容性,该版本切换到预期的公历,还允许用户禁止使用保留的ANSI SQL关键字作为标识符。此外,我们还在数值操作中引入了运行时溢出检查,并在使用预定义模式将数据插入表时引入了编译时类型强制。这些新的验证可以提高数据质量。

连接提示:

虽然我们继续改进编译器,但不能保证编译器总是在每种情况下做出最优决策——连接算法的选择是基于统计和启发式的。当编译器无法做出最佳选择时,用户可以使用连接提示来影响优化器选择更好的计划。这个版本通过添加新的提示扩展了现有的连接提示:SHUFFLE_MERGE、SHUFFLE_HASH和SHUFFLE_REPLICATE_NL。

增强Python api: PySpark和Koalas

Python现在是Spark上使用最广泛的语言,因此,它是Spark 3.0开发的一个关键关注领域。Databricks上68%的笔记本命令是用Python编写的。Apache Spark Python API PySpark每月在Python包索引PyPI上的下载量超过500万次。

许多Python开发人员使用pandas API进行数据结构和数据分析,但是它仅限于单节点处理。我们还在继续开发考拉(Koalas),这是在Apache Spark上实现的panda API,使数据科学家在分布式环境中处理大数据时更有效率。Koalas不需要在PySpark中构建许多函数(例如,绘图支持),从而实现跨集群的高效性能。

经过一年多的发展,考拉对熊猫的API覆盖率接近80%。每月的PyPI下载量已经迅速增长到85万,而且考拉也以每两周发布一次的节奏迅速发展。虽然考拉可能是从单节点熊猫代码进行迁移的最简单方法,但许多考拉仍然使用PySpark api,而PySpark api也在日益流行。

Spark 3.0增强了PySpark api:

带有类型提示的pandas API:熊猫udf最初是在Spark 2.3中引入的,用于扩展PySpark中的用户定义函数,并将熊猫api集成到PySpark应用程序中。但是,当添加更多的UDF类型时,现有的接口很难理解。这个版本引入了一个新的panda UDF接口,它利用Python类型提示来解决panda UDF类型的激增问题。新的接口变得更加python化和自描述。

pandas UDF的新类型和熊猫函数api:该版本添加了两种新的熊猫UDF类型,即对级数的迭代器添加级数的迭代器,对级数的迭代器添加多级数的迭代器。它对于数据预取和昂贵的初始化非常有用。另外,还添加了两个新的pandas-function api map和co- grouping map。更多的细节可以在这篇博客文章中找到。

更好的错误处理:PySpark错误处理对Python用户并不总是友好的。这个版本简化了PySpark异常,隐藏了不必要的JVM堆栈跟踪,并使它们更符合python风格。

改进Spark中的Python支持和可用性仍然是我们的最高优先级之一。

Hydrogen,流化和延展性

通过Spark 3.0,我们完成了Hydrogen项目的关键组件,并引入了改进流和可扩展性的新功能。

基于加速器的调度:

Hydrogen项目是Spark的一个主要项目,旨在更好地统一Spark上的深度学习和数据处理。gpu和其他加速器已被广泛用于加速深度学习工作负载。为了让Spark在目标平台上利用硬件加速器,这个版本增强了现有的调度器,使集群管理器能够感知加速器。用户可以在发现脚本的帮助下通过配置指定加速器。然后,用户可以调用新的RDD api来利用这些加速器。

用于结构化流的新UI:

结构化流最初是在Spark 2.0中引入的。在数据库里的使用增长了4倍之后,每天有超过5万亿条记录在数据库里被结构化流媒体处理。这个版本添加了一个专用的新的Spark UI,用于检查这些流作业。这个新的UI提供了两组统计信息:1)已完成的流化查询作业的聚合信息和2)流化查询的详细统计信息。

可观察指标:

持续监控数据质量的变化是管理数据管道的一个非常理想的特性。这个版本引入了对批处理和流应用程序的监视。可观察指标是可以在查询(DataFrame)上定义的任意聚合函数。一旦一个DataFrame的执行达到一个完成点(例如,完成批处理查询或到达流历元),一个命名的事件就会发出,它包含了自最后一个完成点以来处理的数据的度量。

新的目录插件API:

现有的数据源API缺乏访问和操作外部数据源的元数据的能力。这个版本丰富了数据源V2 API,并引入了新的目录插件API。对于既实现了目录插件API又实现了数据源V2 API的外部数据源,在注册了相应的外部目录之后,用户可以通过多部分标识符直接操作外部表的数据和元数据。

Spark 3.0中的其他更新

Spark 3.0是该社区的一个主要发行版,解决了超过3400个Jira罚单。它是超过440名贡献者的贡献,包括个人和公司,如Databricks,谷歌,微软,英特尔,IBM,阿里巴巴,Facebook, Nvidia, Netflix, Adobe等。在这篇博客文章中,我们强调了Spark在SQL、Python和流媒体方面的一些关键改进,但是在这个3.0里程碑中,还有许多其他功能没有在这里介绍。在发布说明中了解更多信息,并发现Spark的所有其他改进,包括数据源、生态系统、监控等等。

现在就开始使用Spark 3.0吧

如果您想在Databricks运行时7.0中试用Apache Spark 3.0,请注册一个免费试用帐户,并在几分钟内启动。使用Spark 3.0就像在启动集群时选择version“7.0”一样简单。

本文:http://jiagoushi.pro/node/1190

谢谢大家关注,转发,点赞和在看。

python写spark的效率问题_“大数据架构”Spark 3.0发布,重大变化,性能提升18倍...相关推荐

  1. python架构师工作职责_大数据架构师岗位的工作职责

    大数据架构师需要负责深入理解业务需求,对业务建模,设计系统架构,满足业务需求.以下是学习啦小编整理的大数据架构师岗位的工作职责. 大数据架构师岗位的工作职责1 职责: 1.负责数据仓库建设,基于数据驱 ...

  2. python架构师工作职责_大数据架构师工作的岗位职责

    大数据架构师负责研发技术发展方向,新技术领域的探索,将新技术应用到公司大数据平台,提升公司效能.下面是学习啦小编整理的大数据架构师工作的岗位职责. 大数据架构师工作的岗位职责1 职责: 1.负责大数据 ...

  3. 大数据数据收集数据困难_大数据架构、大数据开发与数据分析的区别

    是新朋友吗?记得先点蓝字关注我哦- 今日课程菜单 Java全栈开发 | Web前端+H5 大数据开发 | 数据分析  人工智能+Python | 人工智能+物联网 来源:小职(z_zhizuobiao ...

  4. pb数据窗口怎么调用视图_大数据架构如何做到流批一体?

    阿里妹导读:大数据与现有的科技手段结合,对大多数产业而言都能产生巨大的经济及社会价值.这也是当下许多企业,在大数据上深耕的原因.大数据分析场景需要解决哪些技术挑战?目前,有哪些主流大数据架构模式及其发 ...

  5. t420i升级固态硬盘提升_系统迁移教程:升级SSD后笔记本性能提升两倍?浦科特M9P PLUS 1TB_固态硬盘...

    2020-11-11 19:58:23117点赞289收藏53评论 想攒一台电竞主机.家用主机.酷炫主机无从下手?想省钱又怕性能不达标?值得买帮你打造定制化DIY装机工具,自助全网比价装机,提供最适合 ...

  6. rdd数据存内存 数据量_大数据开发-Spark调优常用手段

    Spark调优 spark调优常见手段,在生产中常常会遇到各种各样的问题,有事前原因,有事中原因,也有不规范原因,spark调优总结下来可以从下面几个点来调优. 1. 分配更多的资源 分配更多的资源: ...

  7. spark入门_[大数据之Spark]——快速入门

    为了良好的阅读下面的文档,最好是结合实际的练习.首先需要下载spark,然后安装hdfs,可以下载任意版本的hdfs. Spark Shell 交互 基本操作 Spark Shell提供给用户一个简单 ...

  8. python在土木工程中的应用_大数据技术及其在土木工程中的应用

    朱之宇 黄程 摘要:随着科技的不断发展,互联网技术的不断革新,信息化时代的到来,各种信息的处理更是十分的复杂,但是随着大数据技术的出现,信息处理的速度和能力变得更强大,一方面大数据能够广泛的应用于各行 ...

  9. spark任务shell运行_大数据系列:Spark的工作原理及架构

    介绍 本Apache Spark教程将说明Apache Spark的运行时架构以及主要的Spark术语,例如Apache SparkContext,Spark shell,Apache Spark应用 ...

最新文章

  1. NYOJ-49 开心的小明
  2. 当深度学习遇上图: 图神经网络的兴起 | 赠书
  3. 如何显示服务器上excel,如何在HTML中使用OWC正确显示、加载服务器端的excel文件呢?...
  4. 解决无法删除的dll文件
  5. jvm性能调优实战 - 40 百万级数据误处理导致的频繁Full GC问题优化
  6. Docker相关的项目
  7. TImage 的一些操作
  8. linux ubuntu技术支持电话,Ubuntu 17.04 将在1月13日结束技术支持
  9. python numpy数组中冒号 : 的使用--全局选择、表示区间
  10. Git 代码管理(代码提交和代码回退)
  11. cmake学习笔记(2)--CMake常用的预定义变量
  12. React 折腾记 - (1) React Router V4 和antd侧边栏的正确关联及动态title的实现
  13. 黑马程序员_毕向东_Java基础视频教程学习笔记(二)
  14. linux socket cups,Linux打印系统CUPS原理分析
  15. 程序员都需要学习什么
  16. python情绪识别_使用百度对话情绪识别api分析文本
  17. vue+Element表单验证+数字英文密码和手机号验证(详细)
  18. 懂车帝上配置高的国产车为什么那么便宜?
  19. 网络渗透实验1.0——网络扫描与网络侦察
  20. python microbit typeerror,在MicroPython中使用microbit模块时出现索引错误

热门文章

  1. 【论文阅读】Locally Adaptive Color Correction for Underwater Image Dehazing and Matching
  2. 驱动仿真物品移动乌龟\Gazebo\cmd_vel和/gazebo/set_model_state
  3. java 数据库 事务 只读_Spring 事务 readOnly 到底是怎么回事?
  4. ambarella H2 添加文件到ext4文件系统
  5. 【Serenity BDD】Serenity 2.2.0 版本变动说明及相应的配置变动
  6. Flex使用ribbit.com的服务给手机发送短信SMS
  7. python关闭excel进程_python win32com关闭Excel进程
  8. 肥宅快乐还是不快乐,拓展欧几里得,exgcd???bfs
  9. 【题解】【AcWing】1526. 洗牌机
  10. 九型人格:三、The proformer 实干者 - 我若没有成就,就没有人会爱我。