spark 3.5版本发布

ApacheSpark3.5.0发布,包含1,300+Jira工单的改进,如SparkConnect的官方支持、分布式训练增强、Python和Scala的结构化流增强,以及SQL功能扩展。此外,还包括PySpark错误类迁移、Python用户定义表函数和内存管理优化等。
摘要由CSDN通过智能技术生成

Apache Spark 3.5.0是3.x系列的第六个版本。在开源社区的重大贡献下,此版本处理了 1,300 多个 Jira 工单。

此版本引入了更多 Spark Connect 正式发布的方案,例如 Scala 和 Go 客户端、分布式训练和推理支持,以及增强了结构化流式处理的兼容性;引入了新的 PySpark 和 SQL 功能,例如 SQL IDENTIFIER 子句、对 SQL 函数调用的命名参数支持、对 HyperLogLog 近似聚合的 SQL 函数支持以及 Python 用户定义的表函数;使用DeepSpeed简化分布式训练;引入运算符之间的水印传播,在结构化流中引入 dropDuplicatesWithinWatermark 操作。

突出

星火连接

  • 将 sql 模块重构为 sql 和 sql-api,以生成可在 Scala Spark Connect 客户端和 Spark 之间共享的最小依赖项集,并避免拉取所有 Spark 传递依赖项。火花-44273
  • 介绍 Spark Connect SPARK-42554 的 Scala 客户端
  • Pandas API 支持 Python Spark Connect 客户端 SPARK-42497
  • 基于 PyTorch 的分布式 ML 支持 Spark Connect SPARK-42471
  • Python 和 Scala 中对 Spark Connect 的结构化流支持 SPARK-42938
  • Go 客户端 SPARK-43351 的初始版本
  • Spark native和Spark Connect客户端在Python和Scala上的兼容性进行了大量改进。
  • 改进了客户端应用程序的可调试性和请求处理(异步处理、重试、长期查询)

Spark SQL

特征
  • 添加元数据列文件块开始和长度 SPARK-42423
  • 支持 Scala/Java sql() SPARK-44066 中的位置参数
  • 在解析器中添加函数调用的命名参数支持 SPARK-43922
  • 支持选择默认,顺序依据,限制,偏移插入源关系SPARK-43071
  • 为 PARTITION BY 添加 SQL 语法,并在 TVF 调用的 TABLE 参数后添加 ORDER BY 子句 SPARK-44503
  • 在描述和显示中创建表输出 SPARK-42123 中包含列默认值
  • 为目录添加可选模式.列表目录 SPARK-43792
  • 为目录列表数据库 SPARK-43881 添加可选模式
  • 准备执行时的回调 SPARK-44145
  • 支持按名称插入语句 SPARK-42750
  • 为 Scala API SPARK-44131 添加call_function
  • 稳定派生列别名 SPARK-40822
  • 支持一般常量表达式作为创建/替换表选项值 SPARK-43529
  • 支持通过 INTERSECT/EXCEPT SPARK-36124 进行关联的子查询
  • 标识符子句 SPARK-43205
  • ANSI 模式:如果内部转换溢出,则转换应返回错误 SPARK-42427
功能
  • 添加对数据草图HllSketch SPARK-16484的支持
  • 通过 aes_encrypt()/aes_decrypt() SPARK-43038 支持 CBC 模式
  • 支持表值函数 SPARK-44200 的表参数解析器规则
  • 实现位图函数 SPARK-44154
  • 添加 try_aes_decrypt() 函数 SPARK-42701
  • array_insert应失败,索引为 0 SPARK-43011
  • 为 to_char SPARK-43815 添加to_varchar别名
  • 高阶功能:array_compact实现SPARK-41235
  • 为内置函数 SPARK-44059 添加命名参数的分析器支持
  • 为用户指定列表的列少于目标表的插入添加 NULL SPARK-42521
  • 添加了对 aes_encrypt IV 和 AAD SPARK-43290 的支持
  • 解码函数在传递时返回错误的结果 空火花-41668
  • 支持 udf“luhn_check”SPARK-42191
  • 支持聚合 SPARK-41631 上的隐式横向列别名解析
  • 在使用窗口 SPARK-42217 的查询中支持隐式横向列别名
  • 添加 3 参数函数别名DATE_ADD并DATE_DIFF SPARK-43492
数据来源
  • 对 JDBC 目录 SPARK-42904 的 Char/Varchar 支持
  • 支持通过 JDBC API 和 TVF SPARK-43119 动态获取 SQL 关键字
  • 数据源 V2:处理基于增量的源的合并命令 SPARK-43885
  • 数据源 V2:处理基于组的源的合并命令 SPARK-43963
  • 数据源 V2:处理基于组的源的更新命令 SPARK-43975
  • 数据源 V2:允许将更新表示为删除和插入 SPARK-43775
  • 允许 jdbc 方言覆盖用于创建表的查询 SPARK-41516
  • SPJ:支持部分群集分发 SPARK-42038
  • DSv2 允许 CTAS/RTAS 保留架构可为空性 SPARK-43390
  • 添加 spark.sql.files.maxPartitionNum SPARK-44021
  • 处理基于增量的源的更新命令 SPARK-43324
  • 允许 V2 写入指示建议随机分区大小 SPARK-42779
  • 支持 lz4raw 压缩编解码器用于镶木地板 SPARK-43273
  • 阿夫罗:编写复杂的联合 SPARK-25050
  • 使用用户提供的 JSON/CSV 数据源 SPARK-39280 格式加速时间戳类型推断
  • Avro 支持由 Long SPARK-43901 支持的自定义十进制类型
  • 当分区键不匹配但联接表达式兼容时,避免在存储分区联接中随机播放 SPARK-41413
  • 将二进制文件更改为不受支持的数据类型 CSV 格式 SPARK-42237
  • 允许 Avro 将联合类型转换为字段名称稳定的 SQL,类型为 SPARK-43333
  • 使用 JSON/CSV 数据源中的旧格式加快时间戳类型推理 SPARK-39281
查询优化
  • 子表达式消除支持快捷表达式 SPARK-42815
  • 改进连接统计估计,如果一方可以保持唯一性 SPARK-39851
  • 引入基于秩的过滤器的窗口组限制以优化top-k计算 SPARK-37099
  • 修复优化规则 SPARK-44431 中空 IN(空列表)的行为
  • 如果分区规范为空,则通过窗口推断并下推窗口限制 SPARK-41171
  • 如果外部联接都是不同的聚合函数,请删除它们 SPARK-42583
  • 折叠子查询中具有相同分区/顺序的两个相邻窗口 SPARK-42525
  • 通过 Python UDF SPARK-42115 下推限制
  • 优化筛选谓词的顺序 SPARK-40045
代码生成和查询执行
  • 运行时过滤器应支持多级随机连接端作为过滤器创建端 SPARK-41674
  • Codegen 支持 HiveSimpleUDF SPARK-42052
  • Codegen 支持 HiveGenericUDF SPARK-42051
  • 代码生成支持构建端外部洗牌哈希加入 SPARK-44060
  • 实现to_csv函数的代码生成 (结构ToCsv) SPARK-42169
  • 使 AQE 支持内存表扫描执行 SPARK-42101
  • 支持左外联接构建左或右外联接构建右混接混接 SPARK-36612
  • 尊重要求在 CTAS/RTAS SPARK-43088 中进行分发和订购
  • 在广播联接流端应用的联接中的合并桶 SPARK-43107
  • 使用联接 SPARK-44251 在完全外部的合并联接键上正确设置可为空
  • 修复 IN 子查询列表查询可空性 SPARK-43413
其他值得注意的变化
  • 使用联接 SPARK-43718 中的键正确设置为可为空
  • 修复相关标量子查询 SPARK-43156 中的 COUNT(*) 为空错误
  • 数据帧连接与外部联接应为不匹配的行返回空值 SPARK-37829
  • 自动重命名冲突的元数据列 SPARK-42683
  • 在面向用户的文档 SPARK-42706 中记录 Spark SQL 错误类

PySpark

特征
  • 支持 Python sql() 中的位置参数 SPARK-44140
  • 通过 sql() SPARK-41666 支持参数化 SQL
  • 支持Python用户自定义表函数SPARK-43797
  • 支持在运行时为 UDF 和熊猫函数 API 设置 Python 可执行文件 SPARK-43574
  • 将 DataFrame.offset 添加到 PySpark SPARK-43213
  • 在 pyspark.sql.dataframe.DataFrame 中实现 dir() 以包含列 SPARK-43270
  • 添加选项以使用大型可变宽度矢量进行箭头 UDF 操作 SPARK-39979
  • 使地图熊猫/地图箭支持屏障模式执行SPARK-42896
  • 将 JobTag API 添加到 PySpark SparkContext SPARK-44194
  • 支持 Python UDTF 在 Python SPARK-44380 中进行分析
  • 在 pyspark.sql.types SPARK-43759 中公开时间戳NTZType
  • 支持嵌套时间戳类型 SPARK-43545
  • 支持从熊猫数据帧和toPandas 创建数据帧中的用户定义类型 [SPARK-43817]SPARK-43702
  • 将描述符二进制选项添加到 Pyspark Protobuf API SPARK-43799
  • 接受泛型元组作为熊猫UDF SPARK-43886的键入提示
  • 添加array_prepend函数 SPARK-41233
  • 添加断言数据帧相等效用函数 SPARK-44061
  • 支持箭头优化的蟒蛇 UDTF SPARK-43964
  • 允许 fp 近似相等的自定义精度 SPARK-44217
  • 使断言架构相等 API 公开 SPARK-44216
  • 支持 ps 的fill_value。SPARK-42094系列
  • 支持从熊猫数据帧 SPARK-43473 创建数据帧中的结构类型
其他值得注意的变化
  • 添加对 df[ 的自动完成支持] in pyspark.sql.dataframe.dataFrame [SPARK-43892]
  • 弃用并删除将在 pandas 2.0 中删除的 API [SPARK-42593]
  • 使 Python 成为代码示例的第一个选项卡 - Spark SQL、数据帧和数据集指南 SPARK-42493
  • 更新剩余的 Spark 文档代码示例以默认显示 Python SPARK-42642
  • 创建箭头记录批处理时使用删除重复的字段名称 [SPARK-41971]
  • 支持使用熊猫数据帧创建数据帧中的重复字段名称 [SPARK-43528]
  • 使用系列创建数据帧时允许列参数 [SPARK-42194]

核心

  • 计划合并在推送合并随机播放时完成地图阶段重试但没有正在运行的任务 SPARK-40082
  • 引入用于 SQL 运算符执行的分区计算器 SPARK-43061
  • 允许随机播放驱动程序组件声明随机播放数据是否可靠存储 SPARK-42689
  • 为阶段添加最大尝试次数限制,以避免潜在的无限重试 SPARK-42577
  • 支持使用静态火花会议SPARK-43782进行日志级别配置
  • 优化百分位数堆 SPARK-42528
  • 将原因参数添加到任务计划程序.取消任务 SPARK-42602
  • 避免在迁移随机数据时丢失已停用的执行程序时重新运行不必要的任务 SPARK-41469
  • 修复了使用 rdd 缓存 SPARK-41497 重试任务时的累加器计数不足的问题
  • 默认情况下,将 RocksDB 用于 spark.history.store.hybridStore.diskBackend SPARK-42277
  • 支持 spark.kubernetes.setSubmitTimeInDriver SPARK-43014
  • 非命运共享缓存包装器番石榴缓存 SPARK-43300
  • 提高 MapOutputTracker.updateMapOutput SPARK-43043 的性能
  • 允许应用控制其元数据是否通过外部随机播放服务 SPARK-43179 保存在数据库中
  • 端口执行器故障跟踪器从 YARN 上的 Spark 到 K8s SPARK-41210
  • 参数化 KubernetesExecutor后端 SPARK-42764 中驱动程序 props 获取器的最大尝试次数
  • 将 SPARK_DRIVER_POD_IP env 变量添加到执行程序 pod SPARK-42769
  • 在执行程序 pod SPARK-43504 上挂载 hadoop 配置映射

结构化流

  • 为 RocksDB 状态存储 SPARK-43120 添加对跟踪固定块内存使用情况的支持
  • 添加 RocksDB 状态存储提供程序内存管理增强功能 SPARK-43311
  • 引入 dropDuplicatesWithinWatermark SPARK-42931
  • 引入新的回调 onQueryIdle() 到 StreamingQueryListener SPARK-43183
  • 添加选项以跳过提交协调器作为 DSv2 源/接收器的流式写入 API 的一部分 SPARK-42968
  • 引入新的回调“onQueryIdle”到StreamingQueryListener SPARK-43183
  • 为 RocksDB 状态存储提供程序 SPARK-43421 实现基于更新日志的检查点
  • 添加对流式处理有状态运算符 SPARK-42792 中使用的 RocksDB WRITE_FLUSH_BYTES的支持
  • 新增支持流式传输 SPARK-42819 中对 RocksDB 的设置max_write_buffer_number和write_buffer_size
  • RocksDB 状态存储锁采集应该在从inputRDD SPARK-42566获取输入迭代器后进行
  • 在运营商中引入水印传播 SPARK-42376
  • 清理 RocksDB 检查点目录 SPARK-42353 中的孤立 sst 和日志文件
  • 展开查询终止事件以包含错误类(如果异常 SPARK-43482 中存在错误类)

毫升

  • 支持使用深速SPARK-44264进行函数的分布式训练
  • 用于 Spark3.5 的 sparkML 的基本接口:估算器/变压器/模型/评估器 SPARK-43516
  • 使 MLv2(火花连接上的 ML)支持熊猫 >= 2.0 SPARK-43783
  • 更新 MLv2 转换器接口 SPARK-43516
  • 在分销商 SPARK-43097 之上实现的新 pyspark ML 逻辑回归估计器
  • 添加分类器.获取数字类返回 SPARK-42526
  • 编写深度速度分布式学习类深速火炬分发器 SPARK-44264
  • 火花连接 SPARK-43981 上 ML 的基本保存/加载实现
  • 改进逻辑回归模型节省 SPARK-43097
  • 在火花连接 SPARK-43982 上实现 ML 的管道估算器
  • 实现交叉验证器估算器 SPARK-43983
  • 实施分类评估器 SPARK-44250
  • 使 PyTorch Distributor 與 Spark Connect SPARK-42993 相容

用户界面

  • 为 Spark Connect SPARK-44394 添加 Spark UI 页面
  • 支持“执行程序”选项卡中的堆直方图列 SPARK-44153
  • 在 UI 上显示每个失败查询的错误消息 SPARK-44367
  • 在“执行程序”选项卡上显示“执行程序的添加/删除时间” SPARK-44309

构建和其他

移除、行为更改和弃用

即将删除

以下功能将在下一个 Spark 主要版本中删除

  • 支持Java 8和Java 11,支持的最低Java版本将是Java 17
  • 支持 Scala 2.12,支持的最低 Scala 版本将是 2.13
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值