首页 > 其他分享 >Spark3.x扩展内容

Spark3.x扩展内容

时间:2023-06-02 20:33:35浏览次数:42  
标签:Spark3 分区 裁剪 扩展 查询 内容 SQL Spark 优化

3.0.0主要的新特性:

  1. 在TPC-DS基准测试中,通过启用自适应查询执行、动态分区裁剪等其他优化措施,相比于Spark 2.4,性能提升了2倍
  2. 兼容ANSI SQL
  3. 对pandas API的重大改进,包括python类型hints及其他的pandas UDFs
  4. 简化了Pyspark异常,更好的处理Python error
  5. structured streaming的新UI
  6. 在调用R语言的UDF方面,速度提升了40倍
  7. 超过3400个Jira问题被解决,这些问题在Spark各个核心组件中分布情况如下图:

image

改进的Spark SQL引擎

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

自适应查询执行

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

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

  1. 动态合并shuffle partitions
    可以简化甚至避免调整shuffle分区的数量。用户可以在开始时设置相对较多的shuffle分区数,AQE会在运行时将相邻的小分区合并为较大的分区。

  2. 动态调整join策略
    在一定程度上避免由于缺少统计信息或着错误估计大小(当然也可能两种情况同时存在),而导致执行次优计划的情况。这种自适应优化可以在运行时sort merge join转换成broadcast hash join,从而进一步提升性能

  3. 动态优化倾斜的join(skew joins)
    skew joins可能导致负载的极端不平衡,并严重降低性能。在AQE从shuffle文件统计信息中检测到任何倾斜后,它可以将倾斜的分区分割成更小的分区,并将它们与另一侧的相应分区连接起来。这种优化可以并行化倾斜处理,获得更好的整体性能。

动态分区裁剪

当优化器在编译时无法识别可跳过的分区时,可以使用"动态分区裁剪",即基于运行时推断的信息来进一步进行分区裁剪。这在星型模型中很常见,星型模型是由一个或多个并且引用了任意数量的维度表的事实表组成。在这种连接操作中,我们可以通过识别维度表过滤之后的分区来裁剪从事实表中读取的分区。在一个TPC-DS基准测试中,102个查询中有60个查询获得2到18倍的速度提升。

ANSI SQL兼容性

对于将工作负载从其他SQL引擎迁移到Spark SQL来说至关重要。

为了提升兼容性,该版本采用Proleptic Gregorian日历,用户可以禁止使用ANSI SQL的保留关键字作为标识符。此外,在数字类型的操作中,引入运行时溢出检查,并在将数据插入具有预定义schema的表时引入了编译时类型强制检查,这些新的校验机制提高了数据的质量。

参考

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

标签:Spark3,分区,裁剪,扩展,查询,内容,SQL,Spark,优化
From: https://www.cnblogs.com/strongmore/p/17366791.html

相关文章

  • Linux 编译安装 php 扩展 amqp
    这里最大的坑,就是  rabbitmq-c和amqp扩展版本不符,导致的各种bug。其他也没啥,这里简单记录下:我这里使用的环境:php7.4  、rabbitmq-c0.7.1、amqp1.9.4. 安装rabbitmq-c(注意记住你的安装位置,下一步要用)wgethttps://github.com/alanxz/rabbitmq-c/releases/download......
  • 第三单元 扩展知识
    1.扩展方法 扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种静态方法,但可以像扩展类型上的实例方法一样进行调用。对于用C#、F#和VisualBasic编写的客户端代码,调用扩展方法与调用在类型中定义的方......
  • 人工智能概述(2):研究内容梳理
    人工智能是为了模拟人的智能。那么,人的智能包含哪些呢?视觉、听觉、语言、语音、文字、知识、学习、判断、分类……因此,人工智能需要在多个领域进行研究,不同领域使用相同或不同的方法进行研究。这些领域包括:机器听觉机器视觉自然语言处理(NLP)图片识别文字识别人脸识......
  • Python网页开发神器fac 0.2.9、fuc 0.1.29新版本更新内容介绍
    fac项目地址:https://github.com/CNFeffery/feffery-antd-componentsfuc项目地址:https://github.com/CNFeffery/feffery-utils-components欢迎star支持⭐大家好我是费老师,由我开源维护的Python网页开发相关组件库fac和fuc分别更新到了0.2.9版本和0.1.29版本,本文就将为大家......
  • 我对内容型产品的理解
    从大公司离职以后,有一个问题的答案就一直不固定——你现在在哪里做什么?后来,我发现了斜杠青年(拥有多重职业和身份的多元生活的人群)一词,于是轻松一点。可以这样回答:我现在是一个半自由职业者,不自由的部分,是良仓孵化器创始合伙人,在公司里做一些为创业者服务的事情,自由的部分,是自己的内......
  • 人人2.0内容再理解 第二篇
    不定期对《人人都是产品经理2.0》内容做点更新,有些地方感觉当时写的不到位,迭代一下。顺道附上之前写过的第一篇:人人2.0书中内容的理解迭代Page30,交易减库存的案例把选择权交给卖家,是受到《失控》启发的说法,过于戏剧化了。增加如下说法:用户与产品是共同成长的,在早期淘宝,因为卖家的不......
  • vue基础用法-内容渲染指令
    1.指令的概念指令(Directives)是vue为开发者提供的模板语法,用于辅助开发者渲染页面的基本结构。vue中的指令按照不同的用途可以分为如下6大类:内容渲染指令属性绑定指令事件绑定指令双向绑定指令条件渲染指令列表渲染指令注意:指令是vue开发中最基础、最常用、最简单的知识......
  • DiscoTOC - 自动内容表格
    示例桌面移动终端  特性toc=tableofcontents(内容列表)通过菜单上面的设置按钮,根据当前内容的状况一键生成toc列表Toc将会一直在页面中尽显显示——滚动内容与topic的链接是同步的当你滚动过当前页面中中的主题的时候,对应这个主题的内容列表将会使用高亮来......
  • DiscoTOC - 自动内容表格
    示例桌面移动终端  特性toc=tableofcontents(内容列表)通过菜单上面的设置按钮,根据当前内容的状况一键生成toc列表Toc将会一直在页面中尽显显示——滚动内容与topic的链接是同步的当你滚动过当前页面中中的主题的时候,对应这个主题的内容列表将会使用高亮来进行显示(显示......
  • vue xlsx组件 导出的excel表头插入内容
    主要就是sheet_add_dom这个方法,dom是带有table标签元素的dom节点。timeData是个二维数组:[["条件1","条件2"],["值1","值2"]];如果是要在表格内容行里面插入内容,可以直接在与表格绑定的对象上,插入内容就可以了。/*timeData是二维数组*/getExcelWithInfo(timeData,dom,tit......