Spark 3.5.1 版本发布

Spark 3.5.1 是第一个包含安全性和正确性修复的维护版本。此版本基于 Spark 的 branch-3.5 维护分支。我们强烈建议所有 3.5 用户升级到此稳定版本。

显著变化

  • [SPARK-45187]: 修复 WorkerPage 以对 logPage URL 使用相同的模式
  • [SPARK-45553]: 弃用 assertPandasOnSparkEqual
  • [SPARK-45652]: SPJ:处理动态过滤后的空输入分区
  • [SPARK-46012]: 如果缺少 appStatus,EventLogFileReader 不应读取滚动日志
  • [SPARK-46029]: 为 DS V2 下推转义单引号、_ 和 %
  • [SPARK-46369]: 从 MasterPage 中正在重启 (RELAUNCHING) 的驱动程序中删除 kill 链接
  • [SPARK-46704]: 修复 MasterPage 以正确按 Duration 列排序 Running Drivers
  • [SPARK-46817]: 通过添加 decommission 命令修复 spark-daemon.sh 的用法
  • [SPARK-46888]: 修复 Master 以在停用被禁用时拒绝工作节点终止请求
  • [SPARK-39910]: DataFrameReader API 无法从 Hadoop 归档文件 (.har) 读取文件
  • [SPARK-40154]: PySpark:DataFrame.cache 文档字符串给出错误的存储级别
  • [SPARK-43393]: 序列表达式可能溢出
  • [SPARK-44683]: 日志级别未正确传递给 RocksDB 状态存储提供程序
  • [SPARK-44805]: 使用 spark.sql.parquet.enableNestedColumnVectorizedReader=true 进行 union 后数据丢失
  • [SPARK-44840]: array_insert() 对于负索引给出错误结果
  • [SPARK-44910]: Encoders.bean 不支持带有泛型类型参数的超类
  • [SPARK-44973]: 修复 conv() 中的 ArrayIndexOutOfBoundsException
  • [SPARK-45014]: 在 SparkContext 中清理文件、jar 和归档时清理文件服务器
  • [SPARK-45057]: 由 RDD 复制级别为 2 引起的死锁
  • [SPARK-45072]: 修复相同单元格评估的外部作用域
  • [SPARK-45075]: 使用无效默认值更改表不会报告错误
  • [SPARK-45078]: 当元素类型不等于派生组件类型时,ArrayInsert 函数应进行显式转换
  • [SPARK-45081]: Encoders.bean 不再适用于只读属性
  • [SPARK-45106]: 当用户输入未能通过运行时替换的输入类型检查时,percentile_cont 出现内部错误
  • [SPARK-45117]: 为 MultiCommutativeOp 表达式实现缺失的 otherCopyArgs
  • [SPARK-45124]: 不要将本地用户 ID 用于本地关系
  • [SPARK-45132]: 修复函数的 IDENTIFIER 子句
  • [SPARK-45171]: GenerateExec 在使用前未能初始化非确定性表达式
  • [SPARK-45182]: 在重试不确定阶段后,忽略旧阶段的任务完成
  • [SPARK-45205]: 自 3.2.0 版本以来,Spark SQL 执行“show partitions”所需时间更长,这可能是由于 SPARK-35278 引入的更改
  • [SPARK-45227]: 修复 CoarseGrainedExecutorBackend 中一个微妙的线程安全问题,即执行器进程随机卡住
  • [SPARK-45291]: 当 ID 无效时,使用未知查询执行 ID 而不是“无此应用程序”
  • [SPARK-45311]: 从 3.4.x 开始,编码器在许多“NoSuchElementException: None.get”上失败,在搜索泛型类型的编码器时;从 3.5.x 开始,它不再是“表达式编码器”
  • [SPARK-45346]: 合并模式时 Parquet 模式推断应遵循大小写敏感标志
  • [SPARK-45371]: 修复 Spark Connect 中的着色问题
  • [SPARK-45383]: CheckAnalysis 中缺少 RelationTimeTravel 的情况
  • [SPARK-45389]: 获取分区元数据时更正 MetaException 匹配规则
  • [SPARK-45424]: 当时间戳与指定 timestampFormat 不匹配时,CSV 模式推断出现回归
  • [SPARK-45430]: 当忽略空值且偏移量大于行数时,FramelessOffsetWindowFunctionFrame 失败
  • [SPARK-45433]: 当时间戳与指定 timestampFormat 不匹配且每个分区只有一行时,CSV/JSON 模式推断报告错误
  • [SPARK-45449]: JDBC 表的缓存失效问题
  • [SPARK-45484]: 修复使用不正确 parquet 压缩编解码器 lz4raw 的错误
  • [SPARK-45498]: 后续:在重试不确定阶段后,忽略旧阶段的任务完成
  • [SPARK-45508]: 添加“--add-opens=java.base/jdk.internal.ref=ALL-UNNAMED”,以便平台可以在 Java 9+ 上访问 cleaner
  • [SPARK-45543]: 如果其他窗口函数没有与类排名函数相同的窗口帧,InferWindowGroupLimit 会导致错误
  • [SPARK-45561]: 在 MySQL 方言中正确转换 TINYINT catalyst
  • [SPARK-45580]: 子查询改变外部查询的输出模式
  • [SPARK-45584]: 当 TakeOrderedAndProjectExec 中存在子查询时,执行失败
  • [SPARK-45592]: AQE 和 InMemoryTableScanExec 正确性错误
  • [SPARK-45604]: 将 timestamp_ntz 转换为数组可能导致 parquet 向量化读取器出现 NPE 或 SEGFAULT
  • [SPARK-45616]: ParVector 的使用不安全,因为它不传播 ThreadLocals 或 SparkSession
  • [SPARK-45631]: PySpark 中 StreamingQueryListener 的向后兼容性因添加 onQueryIdle 而被破坏
  • [SPARK-45670]: 在 K8s 上部署时 SparkSubmit 不支持 –total-executor-cores
  • [SPARK-45678]: 在 tryOrFetchFailedException 下覆盖 BufferReleasingInputStream.available
  • [SPARK-45786]: Decimal 乘法和除法结果不准确
  • [SPARK-45814]: ArrowConverters.createEmptyArrowBatch 可能导致内存泄漏
  • [SPARK-45896]: Seq/Map 类型的 Option[Seq/Date/Timestamp/BigDecimal] 表达式编码失败
  • [SPARK-45920]: 按序数分组应是幂等的
  • [SPARK-46006]: YarnAllocator 在 YarnSchedulerBackend 调用 stop 后未能清理 targetNumExecutorsPerResourceProfileId
  • [SPARK-46016]: 正确修复 pandas API 支持列表
  • [SPARK-46062]: CTE 引用节点未从 CTE 定义节点继承 isStreaming 标志
  • [SPARK-46064]: EliminateEventTimeWatermark 未考虑 isStreaming 标志在解析过程中可能为当前子节点更改的事实
  • [SPARK-46092]: Parquet 行组过滤器创建中的溢出导致结果不正确
  • [SPARK-46189]: 各种 Pandas 函数在解释模式下失败
  • [SPARK-46239]: 隐藏 Jetty 信息
  • [SPARK-46274]: 范围运算符 computeStats() 的正确长整型转换
  • [SPARK-46275]: Protobuf:宽松模式应返回 null 而不是包含 null 字段的结构体
  • [SPARK-46330]: 启用 HybridStore 时 Spark UI 加载长时间阻塞
  • [SPARK-46339]: 名称为数字的目录不应被视为元数据日志
  • [SPARK-46388]: HiveAnalysis 缺少模式守卫 query.resolved
  • [SPARK-46396]: LegacyFastTimestampFormatter.parseOptional 不应抛出异常
  • [SPARK-46443]: Decimal 精度和刻度应由 JDBC 方言决定。
  • [SPARK-46453]: SessionHolder 不会从 internalError() 抛出异常
  • [SPARK-46466]: 向量化 parquet 读取器不应为 timestamp ntz 执行 rebase
  • [SPARK-46480]: 修复表缓存任务尝试时的 NPE
  • [SPARK-46535]: 当扩展描述没有列统计信息的列时出现 NPE
  • [SPARK-46562]: 从 HiveAuthFactory 中的 UserGroupInformation 中移除 keytabFile 的检索
  • [SPARK-46590]: 倾斜连接优化后合并分区断言错误
  • [SPARK-46598]: OrcColumnarBatchReader 在为缺失列创建列向量时应尊重内存模式
  • [SPARK-46602]: CREATE VIEW IF NOT EXISTS 不应抛出 TABLE_OR_VIEW_ALREADY_EXISTS 异常
  • [SPARK-46609]: 避免 PartitioningPreservingUnaryExecNode 中的指数爆炸
  • [SPARK-46640]: RemoveRedundantAliases 在删除别名时未考虑 SubqueryExpression
  • [SPARK-46663]: 禁用带迭代器的 pandas UDF 的内存分析器
  • [SPARK-46676]: dropDuplicatesWithinWatermark 在规范化计划时抛出错误
  • [SPARK-46684]: CoGroup.applyInPandas/Arrow 应正确传递参数
  • [SPARK-46700]: 统计 shuffle 磁盘溢出字节指标的最后一次溢出
  • [SPARK-46747]: 由于 PostgresDialect.getTableExistsQuery - LIMIT 1 导致过多共享锁
  • [SPARK-46763]: 当非分组键具有重复属性时 ReplaceDeduplicateWithAggregate 失败
  • [SPARK-46769]: 改进时间戳相关的模式推断
  • [SPARK-46779]: 使用缓存关系按子查询分组可能失败
  • [SPARK-46786]: 修复 MountVolumesFeatureStep 以使用 ReadWriteOncePod 而不是 ReadWriteOnce
  • [SPARK-46794]: 由于带有子查询的检查点推断的谓词导致结果不正确
  • [SPARK-46796]: SST 文件中的 RocksDB versionID 不匹配
  • [SPARK-46855]: 在 module.py 中将 sketch 添加到 catalyst 模块的依赖项中
  • [SPARK-46861]: 避免 DAGScheduler 中的死锁
  • [SPARK-46862]: 从 CSV 数据源加载的数据帧的 count() 不正确
  • [SPARK-46945]: 为旧版 K8s 集群添加 spark.kubernetes.legacy.useReadWriteOnceAccessMode
  • [SPARK-47019]: AQE 动态缓存分区导致 SortMergeJoin 出现数据丢失
  • [SPARK-45360]: 从 SPARK_REMOTE 初始化 spark 会话构建器配置
  • [SPARK-45706]: 使整个 Binder 构建在设置过程中快速失败
  • [SPARK-46732]: 将 JobArtifactSet 传播到广播执行线程
  • [SPARK-44833]: 当初始 ExecutePlan 未到达服务器时,Spark Connect 重新连接,执行过于急切的重新连接
  • [SPARK-44835]: SparkConnect ReattachExecute 甚至可能在 ExecutePlan 连接之前就触发。
  • [SPARK-45050]: 改进 UNKNOWN io.grpc.StatusRuntimeException 的错误消息
  • [SPARK-45071]: 优化处理多列数据时 BinaryArithmetic#dataType 的处理速度
  • [SPARK-45250]: 在禁用动态分配时,支持 Yarn 集群的阶段级任务资源配置文件
  • [SPARK-45386]: 使用 StorageLevel.NONE 持久化时的正确性问题
  • [SPARK-45419]: 通过删除更大版本的文件版本映射条目,避免在不同 rocksdb 实例中重用 rocksdb sst 文件
  • [SPARK-45495]: 在禁用动态分配时,支持 K8s 集群的阶段级任务资源配置文件
  • [SPARK-45538]: pyspark connect overwrite_partitions 错误
  • [SPARK-45770]: 修复 DataFrame.drop 中的列解析
  • [SPARK-45882]: BroadcastHashJoinExec 传播分区应尊重 CoalescedHashPartitioning
  • [SPARK-45974]: 为 RowLevelOperationRuntimeGroupFiltering 添加 scan.filterAttributes 非空判断
  • [SPARK-46170]: 在 SparkSessionExtensions 中支持注入自适应查询后规划器策略规则
  • [SPARK-46380]: 在内联表评估之前替换当前时间
  • [SPARK-46600]: 将 SqlConf 和 SqlApiConf 之间的共享代码移动到另一个对象
  • [SPARK-46610]: 当选项中某个键没有值时,创建表应抛出异常
  • [SPARK-45189]: 从 TableIdentifier 创建 UnresolvedRelation 应包含目录字段
  • [SPARK-46182]: 由于 lastTaskRunningTime 和 lastShuffleMigrationTime 之间的竞态条件,已停用执行器上的 shuffle 数据丢失
  • [SPARK-46547]: 修复维护线程和流式聚合物理运算符之间的死锁问题
  • [SPARK-46628]: 在 licenses 名称中使用 SPDX 短标识符

依赖项变更

虽然这是一个维护版本,但我们在此版本中仍升级了一些依赖项,它们是

您可以查阅 JIRA 获取详细更改

我们感谢所有为本次发布贡献补丁的社区成员。


Spark 新闻归档

最新新闻

归档