Spark 3.5.0 特性速览

介绍

Spark 3系列已经发布了第六版3.5.0,目前最新3.5.1。

  • 使用最广泛的大数据可扩展计算引擎。
  • 数以千计的公司,包括 80% 的财富 500 强企业,都在使用 Apache Spark。
  • 来自业界和学术界的 2000 多名开源项目贡献者。
    在这里插入图片描述

Apache Spark 3.5.0 是 3.x 系列中的第六个版本,该版本在开源社区的大力贡献下解决了超过 1,300 个 Jira 问题。

版本摘要

此版本在以下几个方面取得了显著进展:

  1. 对 Spark Connect 的适用场景进行了扩展,包括了对 Scala 和 Go 客户端的全面支持,提供了分布式训练与推理功能,并增强了对 Structured Streaming 的兼容性。

  2. 引入了新的 PySpark 和 SQL 功能,例如 SQL 中的 IDENTIFIER 子句、SQL 函数调用的命名参数支持、HyperLogLog 近似聚合的 SQL 函数支持,以及 Python 用户自定义表函数。

  3. 通过集成 DeepSpeed,简化了分布式训练的过程。

  4. 引入了水印(watermark)在各个算子间的传播机制。

  5. 在 Structured Streaming 中引入了 dropDuplicatesWithinWatermark 操作,使得在特定水印范围内去重数据成为可能。

Apache Spark 3.5.0 版本在提升连接服务、增强编程语言支持、丰富PySpark和SQL功能、优化分布式训练及强化流处理能力等方面均实现了重要改进与创新。

亮点内容

亮点内容:

  1. Spark Connect 支持 Scala 和 Go 客户端 (SPARK-42554, SPARK-43351):Spark Connect 现已为 Scala 和 Go 语言提供客户端支持。

  2. 基于 PyTorch 的分布式机器学习支持 (SPARK-42471):Spark Connect 集成了对基于 PyTorch 的分布式机器学习的支持。

  3. Python 和 Scala 中的 Spark Connect 结构化流处理支持 (SPARK-42938):在 Python 和 Scala 中增加了对 Spark Connect 结构化流处理功能的支持。

  4. Python Spark Connect 客户端的 Pandas API 支持 (SPARK-42497):Python Spark Connect 客户端现在支持使用 Pandas API。

  5. 引入 Arrow Python UDFs (SPARK-40307):新增了对 Arrow Python 用户定义函数(UDFs)的支持。

  6. 支持 Python 用户定义表函数 (SPARK-43798):添加了对 Python 用户自定义表函数的支持。

  7. 将 PySpark 错误迁移到错误类上 (SPARK-42986):改进了 PySpark 错误处理机制,将其整合到专门的错误类中。

  8. PySpark 测试框架 (SPARK-44042):推出了 PySpark 测试框架以方便进行单元测试。

  9. 添加对 Datasketches HllSketch 的支持 (SPARK-16484):内置了对 Datasketches HllSketch 数据结构的支持。

  10. 内置 SQL 函数改进 (SPARK-41231):提升了内置 SQL 函数的功能。

  11. 引入 IDENTIFIER 子句 (SPARK-43205):在 SQL 中引入了 IDENTIFIER 子句以支持特定语法特性。

  12. 将 SQL 函数添加到 Scala、Python 和 R API 中 (SPARK-43907):各编程接口现均支持直接调用 SQL 函数。

  13. 添加 SQL 函数的命名参数支持 (SPARK-43922):允许在调用 SQL 函数时使用命名参数。

  14. 当 Shuffle 数据迁移后避免因执行器下线而无谓地重新运行任务 (SPARK-41469):优化任务调度逻辑,减少不必要的任务重跑。

  15. 分布式 ML 与 Spark Connect 的集成 (SPARK-42471):加强了分布式机器学习与 Spark Connect 的结合。

  16. DeepSpeed 分布式优化器支持 (SPARK-44264):集成 DeepSpeed 以简化分布式训练过程。

  17. 实现 RocksDB 状态存储的变更日志检查点 (SPARK-43421):改进了 RocksDB 状态存储的持久化机制。

  18. 引入水印在运算符间的传播 (SPARK-42376):在 Spark 中实现水印信息在不同运算阶段之间的传递。

  19. 引入 dropDuplicatesWithinWatermark 操作 (SPARK-42931):在结构化流处理中增加了根据水印去除重复数据的操作。

  20. 提升 RocksDB 状态存储提供程序的内存管理效能 (SPARK-43311):针对 RocksDB 状态存储进一步优化了内存管理机制。

值得一提

Spark Connect 相关改进与介绍

  1. sql模块重构:为了在Scala Spark Connect客户端和Spark之间共享一个最小化的依赖集合,并避免拉取所有Spark的传递依赖项,将sql模块重构为sql和sql-api两个模块。(SPARK-44273)

  2. Scala客户端引入:正式推出用于Spark Connect的Scala客户端,使得Scala开发者可以直接利用Spark Connect进行相关操作。(SPARK-42554)

  3. Python Spark Connect客户端的Pandas API支持:为Python版Spark Connect客户端增添了对Pandas API的支持,用户可以更便捷地进行数据处理和分析。(SPARK-42497)

  4. 基于PyTorch的分布式ML支持:Spark Connect现已支持基于PyTorch的分布式机器学习功能,便于用户构建和部署大规模机器学习应用。(SPARK-42471)

  5. Python和Scala中的结构化流处理支持:为Python和Scala环境下的Spark Connect增加了结构化流处理功能,使得用户可以更好地处理实时或连续的数据流。(SPARK-42938)

  6. Go客户端初始版本发布:发布了Go语言版本的Spark Connect客户端初始版本,扩大了Spark Connect对更多开发者的语言覆盖范围。(SPARK-43351)

  7. 跨Python和Scala的Spark原生与Spark Connect客户端间的兼容性改进:对Spark原生API与Spark Connect客户端在Python和Scala环境下的兼容性进行了大量优化,确保了两者间顺畅协作。

  8. 客户端应用程序调试性和请求处理能力提升:增强了客户端应用的调试功能及请求处理性能,如异步处理、重试机制和长期查询等,以提高应用程序的稳定性和效率。

Spark SQL 新增功能详解

  1. 添加元数据列文件块起始位置和长度:SPARK-42423,Spark SQL 现在支持在元数据中记录列文件的块起始位置和长度信息。

  2. 在 Scala/Java sql() 方法中支持位置参数:SPARK-44066,在 Scala 和 Java API 中的 sql() 方法中添加了对位置参数的支持,使得可以通过索引方式传入 SQL 查询参数。

  3. 在函数调用解析器中添加命名参数支持:SPARK-43922,在 SQL 解析器中为函数调用增加了命名参数的支持,使得在调用函数时可采用“名称=值”的形式指定参数。

  4. 支持 INSERT INTO 语句源关系中带有 ORDER BY, LIMIT, OFFSET 的 SELECT DEFAULT:SPARK-43071,Spark SQL 现在允许在 INSERT INTO 语句中插入源表通过 ORDER BY、LIMIT 和 OFFSET 进行筛选后的 DEFAULT 行。

  5. 为 TVF(Table-Valued Function)调用添加 PARTITION BY 和 ORDER BY 子句的 SQL 语法:SPARK-44503,在 TVF 调用时可以在 TABLE 参数后紧跟 PARTITION BY 和 ORDER BY 子句。

  6. 在 DESCRIBE 和 SHOW CREATE TABLE 输出中包含列默认值信息:SPARK-42123,现在在 DESCRIBE 和 SHOW CREATE TABLE 命令的结果中会展示列的默认值。

  7. 为 Catalog.listCatalogs 添加可选模式参数:SPARK-43792,Catalog API 中的 listCatalogs 方法现在支持过滤返回结果,可以根据提供的可选模式匹配列出目录。

  8. 为 Catalog.listDatabases 添加可选模式参数:SPARK-43881,Catalog API 中的 listDatabases 方法也支持过滤返回结果,同样可根据提供的可选模式匹配列出数据库列表。

  9. 当准备好执行时触发回调:SPARK-44145,Spark SQL 引入了一个新功能,可在计划执行准备就绪时触发用户自定义的回调函数。

  10. 支持按名称插入(Insert By Name)语句:SPARK-42750,Spark SQL 现在支持按照列名而非列顺序来插入数据。

  11. 为 Scala API 添加 call_function 方法:SPARK-44131,在 Scala API 中新增 call_function 方法,以便直接从代码中调用 SQL 函数。

  12. 稳定的派生列别名:SPARK-40822,Spark SQL 改进了派生列的别名生成机制,确保其在整个查询过程中保持一致。

  13. 支持通用常量表达式作为 CREATE/REPLACE TABLE OPTIONS 的值:SPARK-43529,在创建或替换表时,选项参数(OPTIONS)现在可接受更为复杂的常量表达式作为值。

  14. 支持通过 INTERSECT/EXCEPT 操作符实现关联子查询:SPARK-36124,Spark SQL 已经能够处理含有关联条件的INTERSECT/EXCEPT子查询。

  15. IDENTIFIER 子句:SPARK-43205,引入了 IDENTIFIER 子句,用于在 SQL 语句中更加灵活地引用和处理标识符(如表名、列名等)。

  16. ANSI 模式下:Conv 函数在内部转换溢出时应返回错误:SPARK-42427,在遵循 ANSI 标准的模式下,当 Conv 函数进行数据类型转换时如果发生溢出,将会抛出错误。

其他

此外还有Core、PySpark、Structured Streaming、ML和UI等等诸多方面的改进。Spark 3.5还提示了将会移除对Java 8和Java 11的支持,改为最低Java 17。

小结

技术创新与性能、生态扩展与兼容性、稳定性与易用性等方面全面提升,Apache Spark 3.5.0的发布对于整个大数据生态系统而言,不仅意味着性能和功能上的实质性飞跃,也是对当下及未来大数据处理需求的有力回应,通过不断演进与优化,巩固了Spark在大数据处理领域的领先地位。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/274506.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

英伟达GTC2024大会开幕,发布机器人003计划,引领具身智能新时代

一、背景 在全球科技创新的前沿阵地,2024年3月的英伟达GPU技术大会(GTC)再次成为全球瞩目的焦点。在此次盛会上,英伟达公司创始人兼首席执行官黄仁勋先生不仅展示了其公司在加速计算和生成式AI领域的最新突破,更震撼发…

耳机壳UV树脂制作私模定制耳塞需要什么样的设备和技术?

制作私模定制耳塞需要使用到一些特定的设备和技术,包括但不限于以下内容: 耳模制作工具:用于获取用户耳型的耳模制作工具,如硅胶、橡皮泥等。需要使用熟练的手法和技术,确保耳模的准确性和稳定性。UV树脂:…

HCIA——30奈奎斯特定理、香农定理

学习目标: 计算机网络 1.掌握计算机网络的基本概念、基本原理和基本方法。 2.掌握计算机网络的体系结构和典型网络协议,了解典型网络设备的组成和特点,理解典型网络设备的工作原理。 3.能够运用计算机网络的基本概念、基本原理和基本方法进行…

Laravel框架项目首页内容修改

#Laravel# 安装Laravel框架成功后运行项目&#xff0c;看到下面这个图就说明安装框架成功了 需要根据自己的需求修改页面时&#xff0c;先找到首页的文件 首页对应的页面文件为项目根目录下的resources/views/welcome.blade.php文件 <!DOCTYPE html> <html lang&quo…

如何从零开始拆解uni-app开发的vue项目(一)

uni-app项目分析: 背景:最近接手一个前同事留下的半拉子项目,出拿过来觉得很简单;当我看到app.vue的时候很确定是vue项目,心里不怎么慌,果断安装node.js,然后就去npm ;安装VS code,事实并不是我期盼的那样,或者说根本就不能运行。 报错:应用vs code打开文件,输入命…

数据库只追求性能是不够的!

那些成功的数据库公司没有一家是通过性能比竞争对手更快而成功的。 作者&#xff1a;JORDAN TIGANI&#xff0c;DuckDB 公司 MotherDuck 联合创始人&CEO 本文和封面来源&#xff1a;https://motherduck.com/&#xff0c;爱可生开源社区翻译。 本文约 4500 字&#xff0c;预…

3D模型优化服务+三维可视化+数字孪生+元宇宙=眸瑞科技

眸瑞科技&#xff1a;老子云平台AMRT3D数字孪生引擎 老子云概述 老子云3D可视化快速开发平台&#xff0c;集云压缩、云烘焙、云存储云展示于一体&#xff0c;使3D模型资源自动输出至移动端PC端、Web端&#xff0c;能在多设备、全平台进行展示和交互&#xff0c;是全球领先、自…

使用甘特图实现高效时间规划

甘特图虽然看似简单,却蕴含着规划时间的奥秘。它将复杂的工序分解成逻辑严密的任务链条,每个短小的条形图块都清晰地道出一个任务的起始、持续和终止。就像指挥家挥舞手中的棒,每个动作都精确拍着节奏,确保各个乐手分工合作、行云流水。择一个好用的甘特图制作工具,会让你事半功…

GPT-4与Claude3、Gemini、Sora:AI领域的技术创新与突破

【最新增加Claude3、Gemini、Sora、GPTs讲解及AI领域中的集中大模型的最新技术】 2023年随着OpenAI开发者大会的召开&#xff0c;最重磅更新当属GPTs&#xff0c;多模态API&#xff0c;未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚…

C++文件操作详解

C 通过以下几个类支持文件的输入输出&#xff1a; ofstream: 写操作&#xff08;输出&#xff09;的文件类 (由ostream引申而来) ifstream: 读操作&#xff08;输入&#xff09;的文件类(由istream引申而来) fstream: 可同时读写操作的文件类 (由iostream引申而来) 打开文件(…

TikTok云手机是什么原理?

随着社交媒体的快速发展和普及&#xff0c;TikTok已成为全球最受欢迎的短视频平台之一&#xff0c;吸引了数以亿计的用户。在TikTok上&#xff0c;许多用户和内容创作者都希望能够更灵活地管理和运营多个账号&#xff0c;这就需要借助云手机技术。那么&#xff0c;TikTok云手机…

从服务器到云原生:企业IT基础设施的演进之路

随着数字经济的迅猛发展&#xff0c;企业IT数字化转型已成为推动业务创新和提升竞争力的关键。在这一转型过程中&#xff0c;基础设施的建设与升级显得尤为重要。企业需要不断优化和更新他们的基础设施&#xff0c;以适应不断变化的市场需求和技术发展。本文将探讨企业IT数字化…

python便民超市管理系统flask-django-nodejs-php

随着人们生活节奏的加快&#xff0c;以前传统的购物方式发生了巨大的改变&#xff0c;以前一个超市要想经营好自己的门店&#xff0c;每天都要忙着记账出账&#xff0c;尤其是出库入库统计&#xff0c;如果忙中出乱&#xff0c;可能导致今天所有的营业流水&#xff0c;要重新换…

【视频异常检测】Real-world Anomaly Detection in Surveillance Videos 论文阅读

Real-world Anomaly Detection in Surveillance Videos 论文阅读 Abstract1. Introduction2. Related Work3. Proposed Anomaly Detection Method3.1. Multiple Instance Learning3.2. Deep MIL Ranking Model 4. Dataset4.1. Previous datasets4.2. Our dataset 5. Experiment…

Unity发布webgl设置占满浏览器运行

Unity发布webgl设置占满浏览器运行 Unity发布webgl的时候index.html的模板文件 模板文件路径&#xff0c;根据自己的需求修改。 C:\Program Files\Unity\Hub\Editor\2021.1.18f1c1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\WebGLTemplates\Default再桌面新建一个t…

Node.js常用命令:了解Node.js的核心命令和用法

学习目标&#xff1a; 理解Node.js和npm的概念及其在开发中的作用&#xff1b;掌握Node.js的核心命令&#xff0c;包括node、npm、npx等&#xff1b;学会使用node命令来执行JavaScript文件和模块&#xff1b;熟悉npm命令&#xff0c;包括安装、更新、卸载依赖包等操作&#xf…

大数据技术学习笔记(十三)—— HBase

目录 1 Hbase 概述1.1 Hbase 定义1.2 HBase 数据模型1.2.1 HBase 逻辑结构1.2.2 HBase 物理存储结构1.2.3 数据模型 1.3 HBase 基本架构 2 HBase Shell 操作2.1 基本操作2.2 namespace 操作2.3 表操作 3 HBase 原理深入3.1 RegionServer 架构3.2 HBase 写流程3.3 MemStore Flus…

CentOS 7.9 常用环境配置

文章目录 环境准备安装docker安装Java安装maven安装git安装MYSQL安装Redis安装RabbitMq安装minio 环境准备 操作系统版本为centos 7.9&#xff0c;内核版本需要在3.10以上 sudo uname -rsudo cat /etc/redhat-release1.确认环境好后&#xff0c;安装工具包并设置仓库 sudo yum…

YOLOv5源码逐行超详细注释与解读(1)——项目目录结构解析

前言 前面简单介绍了YOLOv5的网络结构和创新点&#xff08;直通车&#xff1a;【YOLO系列】YOLOv5超详细解读&#xff08;网络详解&#xff09;&#xff09; 在接下来我们会进入到YOLOv5更深一步的学习&#xff0c;首先从源码解读开始。 因为我是纯小白&#xff0c;刚开始下…

经典控制算法——PID算法原理分析及优化

今天为大家介绍一下经典控制算法之一的PID控制方法。PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。 在大学期间,参加的智能汽车竞赛中就使用到了PID经典控制算法,对于智能小车的调…
最新文章