当前位置: 首页 > article >正文

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

相关文章:

  • MFC用List Control 和Picture控件实现界面切换效果
  • UVM 验证方法学之interface学习系列文章(十二)virtual interface 终结篇
  • 如何在window 使用 conda 环境下载大模型
  • Liveweb视频融合共享平台在果园农场等项目中的视频监控系统搭建方案
  • powershell美化
  • 【AI知识】为什么激活值过大/过小,初始权重过大/过小,可能导致梯度爆炸/消失?具体例子举例
  • 安装tensorflow2.4
  • 【Greenhills】MULTI IDE-GHS最新版本Compiler 23.5.4的兼容性问题
  • 英伟达GTC2024大会开幕,发布机器人003计划,引领具身智能新时代
  • JAVA基础—多线程基础
  • 统计咨询|久菜盒子工作室可实现需求
  • 耳机壳UV树脂制作私模定制耳塞需要什么样的设备和技术?
  • HCIA——30奈奎斯特定理、香农定理
  • springboot日志配置文件log4j2.xml
  • Laravel框架项目首页内容修改
  • 如何从零开始拆解uni-app开发的vue项目(一)
  • 数据库只追求性能是不够的!
  • 3D模型优化服务+三维可视化+数字孪生+元宇宙=眸瑞科技
  • 使用甘特图实现高效时间规划
  • 微软AI系列 C#中实现相似度计算涉及到加载图像、使用预训练的模型提取特征以及计算相似度
  • GPT-4与Claude3、Gemini、Sora:AI领域的技术创新与突破
  • C++文件操作详解
  • Pytest教程:详解pytest.main()
  • TikTok云手机是什么原理?
  • Linux系统优化及性能调优
  • 从服务器到云原生:企业IT基础设施的演进之路