Apache Spark 3.5.0 版本更新详解:技术创新与生态扩展双管齐下
创作时间:
作者:
@小白创作中心
Apache Spark 3.5.0 版本更新详解:技术创新与生态扩展双管齐下
引用
CSDN
1.
https://blog.csdn.net/yuand7/article/details/136834490
Apache Spark 3.5.0版本于近期发布,作为3.x系列的第六个版本,该版本在开源社区的大力贡献下解决了超过1,300个Jira问题。新版本在Spark Connect、SQL功能、分布式训练、流处理等方面实现了重要改进与创新,进一步巩固了Spark在大数据处理领域的领先地位。
介绍
Spark 3系列已经发布了第六版3.5.0,目前最新3.5.1。
- 使用最广泛的大数据可扩展计算引擎。
- 数以千计的公司,包括 80% 的财富 500 强企业,都在使用 Apache Spark。
- 来自业界和学术界的 2000 多名开源项目贡献者。
Apache Spark 3.5.0 是 3.x 系列中的第六个版本,该版本在开源社区的大力贡献下解决了超过 1,300 个 Jira 问题。
版本摘要
此版本在以下几个方面取得了显著进展:
- 对 Spark Connect 的适用场景进行了扩展,包括了对 Scala 和 Go 客户端的全面支持,提供了分布式训练与推理功能,并增强了对 Structured Streaming 的兼容性。
- 引入了新的 PySpark 和 SQL 功能,例如 SQL 中的 IDENTIFIER 子句、SQL 函数调用的命名参数支持、HyperLogLog 近似聚合的 SQL 函数支持,以及 Python 用户自定义表函数。
- 通过集成 DeepSpeed,简化了分布式训练的过程。
- 引入了水印(watermark)在各个算子间的传播机制。
- 在 Structured Streaming 中引入了 dropDuplicatesWithinWatermark 操作,使得在特定水印范围内去重数据成为可能。
Apache Spark 3.5.0 版本在提升连接服务、增强编程语言支持、丰富PySpark和SQL功能、优化分布式训练及强化流处理能力等方面均实现了重要改进与创新。
亮点内容
亮点内容:
- Spark Connect 支持 Scala 和 Go 客户端 (SPARK-42554, SPARK-43351):Spark Connect 现已为 Scala 和 Go 语言提供客户端支持。
- 基于 PyTorch 的分布式机器学习支持 (SPARK-42471):Spark Connect 集成了对基于 PyTorch 的分布式机器学习的支持。
- Python 和 Scala 中的 Spark Connect 结构化流处理支持 (SPARK-42938):在 Python 和 Scala 中增加了对 Spark Connect 结构化流处理功能的支持。
- Python Spark Connect 客户端的 Pandas API 支持 (SPARK-42497):Python Spark Connect 客户端现在支持使用 Pandas API。
- 引入 Arrow Python UDFs (SPARK-40307):新增了对 Arrow Python 用户定义函数(UDFs)的支持。
- 支持 Python 用户定义表函数 (SPARK-43798):添加了对 Python 用户自定义表函数的支持。
- 将 PySpark 错误迁移到错误类上 (SPARK-42986):改进了 PySpark 错误处理机制,将其整合到专门的错误类中。
- PySpark 测试框架 (SPARK-44042):推出了 PySpark 测试框架以方便进行单元测试。
- 添加对 Datasketches HllSketch 的支持 (SPARK-16484):内置了对 Datasketches HllSketch 数据结构的支持。
- 内置 SQL 函数改进 (SPARK-41231):提升了内置 SQL 函数的功能。
- 引入 IDENTIFIER 子句 (SPARK-43205):在 SQL 中引入了 IDENTIFIER 子句以支持特定语法特性。
- 将 SQL 函数添加到 Scala、Python 和 R API 中 (SPARK-43907):各编程接口现均支持直接调用 SQL 函数。
- 添加 SQL 函数的命名参数支持 (SPARK-43922):允许在调用 SQL 函数时使用命名参数。
- 当 Shuffle 数据迁移后避免因执行器下线而无谓地重新运行任务 (SPARK-41469):优化任务调度逻辑,减少不必要的任务重跑。
- 分布式 ML 与 Spark Connect 的集成 (SPARK-42471):加强了分布式机器学习与 Spark Connect 的结合。
- DeepSpeed 分布式优化器支持 (SPARK-44264):集成 DeepSpeed 以简化分布式训练过程。
- 实现 RocksDB 状态存储的变更日志检查点 (SPARK-43421):改进了 RocksDB 状态存储的持久化机制。
- 引入水印在运算符间的传播 (SPARK-42376):在 Spark 中实现水印信息在不同运算阶段之间的传递。
- 引入 dropDuplicatesWithinWatermark 操作 (SPARK-42931):在结构化流处理中增加了根据水印去除重复数据的操作。
- 提升 RocksDB 状态存储提供程序的内存管理效能 (SPARK-43311):针对 RocksDB 状态存储进一步优化了内存管理机制。
值得一提
Spark Connect 相关改进与介绍
- sql模块重构:为了在Scala Spark Connect客户端和Spark之间共享一个最小化的依赖集合,并避免拉取所有Spark的传递依赖项,将sql模块重构为sql和sql-api两个模块。(SPARK-44273)
- Scala客户端引入:正式推出用于Spark Connect的Scala客户端,使得Scala开发者可以直接利用Spark Connect进行相关操作。(SPARK-42554)
- Python Spark Connect客户端的Pandas API支持:为Python版Spark Connect客户端增添了对Pandas API的支持,用户可以更便捷地进行数据处理和分析。(SPARK-42497)
- 基于PyTorch的分布式ML支持:Spark Connect现已支持基于PyTorch的分布式机器学习功能,便于用户构建和部署大规模机器学习应用。(SPARK-42471)
- Python和Scala中的结构化流处理支持:为Python和Scala环境下的Spark Connect增加了结构化流处理功能,使得用户可以更好地处理实时或连续的数据流。(SPARK-42938)
- Go客户端初始版本发布:发布了Go语言版本的Spark Connect客户端初始版本,扩大了Spark Connect对更多开发者的语言覆盖范围。(SPARK-43351)
- 跨Python和Scala的Spark原生与Spark Connect客户端间的兼容性改进:对Spark原生API与Spark Connect客户端在Python和Scala环境下的兼容性进行了大量优化,确保了两者间顺畅协作。
- 客户端应用程序调试性和请求处理能力提升:增强了客户端应用的调试功能及请求处理性能,如异步处理、重试机制和长期查询等,以提高应用程序的稳定性和效率。
Spark SQL 新增功能详解
- 添加元数据列文件块起始位置和长度:SPARK-42423,Spark SQL 现在支持在元数据中记录列文件的块起始位置和长度信息。
- 在 Scala/Java sql() 方法中支持位置参数:SPARK-44066,在 Scala 和 Java API 中的
sql()
方法中添加了对位置参数的支持,使得可以通过索引方式传入 SQL 查询参数。 - 在函数调用解析器中添加命名参数支持:SPARK-43922,在 SQL 解析器中为函数调用增加了命名参数的支持,使得在调用函数时可采用“名称=值”的形式指定参数。
- 支持 INSERT INTO 语句源关系中带有 ORDER BY, LIMIT, OFFSET 的 SELECT DEFAULT:SPARK-43071,Spark SQL 现在允许在 INSERT INTO 语句中插入源表通过 ORDER BY、LIMIT 和 OFFSET 进行筛选后的 DEFAULT 行。
- 为 TVF(Table-Valued Function)调用添加 PARTITION BY 和 ORDER BY 子句的 SQL 语法:SPARK-44503,在 TVF 调用时可以在 TABLE 参数后紧跟 PARTITION BY 和 ORDER BY 子句。
- 在 DESCRIBE 和 SHOW CREATE TABLE 输出中包含列默认值信息:SPARK-42123,现在在 DESCRIBE 和 SHOW CREATE TABLE 命令的结果中会展示列的默认值。
- 为 Catalog.listCatalogs 添加可选模式参数:SPARK-43792,Catalog API 中的 listCatalogs 方法现在支持过滤返回结果,可以根据提供的可选模式匹配列出目录。
- 为 Catalog.listDatabases 添加可选模式参数:SPARK-43881,Catalog API 中的 listDatabases 方法也支持过滤返回结果,同样可根据提供的可选模式匹配列出数据库列表。
- 当准备好执行时触发回调:SPARK-44145,Spark SQL 引入了一个新功能,可在计划执行准备就绪时触发用户自定义的回调函数。
- 支持按名称插入(Insert By Name)语句:SPARK-42750,Spark SQL 现在支持按照列名而非列顺序来插入数据。
- 为 Scala API 添加 call_function 方法:SPARK-44131,在 Scala API 中新增 call_function 方法,以便直接从代码中调用 SQL 函数。
- 稳定的派生列别名:SPARK-40822,Spark SQL 改进了派生列的别名生成机制,确保其在整个查询过程中保持一致。
- 支持通用常量表达式作为 CREATE/REPLACE TABLE OPTIONS 的值:SPARK-43529,在创建或替换表时,选项参数(OPTIONS)现在可接受更为复杂的常量表达式作为值。
- 支持通过 INTERSECT/EXCEPT 操作符实现关联子查询:SPARK-36124,Spark SQL 已经能够处理含有关联条件的INTERSECT/EXCEPT子查询。
- IDENTIFIER 子句:SPARK-43205,引入了 IDENTIFIER 子句,用于在 SQL 语句中更加灵活地引用和处理标识符(如表名、列名等)。
- 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在大数据处理领域的领先地位。
热门推荐
《孤岛惊魂6》图文攻略 全流程全支线全收集攻略
意大利文艺复兴艺术主题:神话到肖像
铅酸蓄电池的维护方法有哪些?正确维护铅酸蓄电池的意义是什么?
SCI论文精简篇幅的策略与技巧
联合国糖尿病日说健康:远离“甜蜜的负担”
狼和鹿的故事:一个关于生态平衡的寓言
没签劳动合同如何保护员工权益?劳动法解读及HR应对策略
天下真花独牡丹,八首绝美的牡丹诗词,共赏国色天香
冰箱选购全攻略:从材质到技术,一文读懂如何挑选理想冰箱
美国民众购买力不升反降
推荐5道应季蔬菜,清肠胃,补能量,增强体质好吸收
惠州旅游必去十大景点:自然与人文的完美交融
古代的幽州在哪里?是现在的什么地方?幽州位置地图
日本面临重大灾难,专家警告:一旦发生,损失惨重不可估量!
合法途径下查询他人微信号的方法探讨
如何通过PMO管理优化项目流程?
深度解析跑步心率:从计算到应用的全面指南
1988年属什么生肖
牛肉面在不同地域的风味演变研究
蜂窝网络数据
女方不退彩礼,法律如何处理?
上班族必看:30个实用养生指南助力职场健康生活
大理的风花雪月:一场心灵与自然的浪漫邂逅
中国信通院联合发布《低空经济政策与产业生态研究报告(2024年)》
如何在Windows 11上为WiFi连接启用随机MAC地址
中医治疗抑郁症真的有优势?看完这篇你就知道!
太平公主的权力巅峰:七位宰相五位出自她门下,最终却输给了李隆基
一个护胃,一个护腿!麦滋林vs迈之灵,千万别用错!
编程游戏开发中,概率机制可参考 PRD公式
如何加强企业廉洁文化建设的实施效果?