Spark 3.5.1 版本发布

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

值得注意的更改

  • [SPARK-45187]: 修复 WorkerPage 使用相同的模式来生成 logPage 链接
  • [SPARK-45553]: 弃用 assertPandasOnSparkEqual
  • [SPARK-45652]: SPJ: 处理动态过滤后的空输入分区
  • [SPARK-46012]: 如果 appStatus 缺失,EventLogFileReader 不应读取滚动日志
  • [SPARK-46029]: 转义 DS V2 下推的单引号、_ 和 %
  • [SPARK-46369]: 从 MasterPage 中删除 RELLLAUNCHING 驱动程序的 kill 链接
  • [SPARK-46704]: 修复 MasterPage 以按 Duration 列正确排序 Running Drivers 表格
  • [SPARK-46817]: 通过添加 decommission 命令来修复 spark-daemon.sh 的用法
  • [SPARK-46888]: 修复 Master,如果停用已禁用,则拒绝 worker kill 请求
  • [SPARK-39910]: DataFrameReader API 无法从 hadoop 归档文件 (.har) 读取文件
  • [SPARK-40154]: PySpark: DataFrame.cache docstring 给出错误的存储级别
  • [SPARK-43393]: 序列表达式可能溢出
  • [SPARK-44683]: 日志级别未正确传递到 RocksDB 状态存储提供程序
  • [SPARK-44805]: 使用 spark.sql.parquet.enableNestedColumnVectorizedReader=true 进行 union 后数据丢失
  • [SPARK-44840]: array_insert() 为 ngative 索引提供错误的结果
  • [SPARK-44910]: Encoders.bean 不支持具有泛型类型参数的超类
  • [SPARK-44973]: 修复 conv() 中的 ArrayIndexOutOfBoundsException
  • [SPARK-45014]: 在 SparkContext 中清理文件、jars 和 archives 时,清理 fileserver
  • [SPARK-45057]: 由 rdd 复制级别为 2 引起的死锁
  • [SPARK-45072]: 修复同一单元格评估的 Outerscopes
  • [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 paritions”的时间更长,这可能是由于 SPARK-35278 引入的更改
  • [SPARK-45227]: 修复 CoarseGrainedExecutorBackend 中微妙的线程安全问题,其中执行程序进程随机卡住
  • [SPARK-45291]: 当 ID 无效时,使用未知查询执行 ID 而不是没有这样的应用程序
  • [SPARK-45311]: 自 3.4.x 以来,Encoder 在许多“NoSuchElementException: None.get”上失败,搜索泛型类型的编码器,并且自 3.5.x 以来不是“表达式编码器”
  • [SPARK-45346]: 合并模式时,Parquet 模式推断应考虑区分大小写标志
  • [SPARK-45371]: 修复 Spark Connect 中的 shading 问题
  • [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 的 bug
  • [SPARK-45498]: 后续行动:在重试不确定的阶段后,忽略来自旧阶段的任务完成
  • [SPARK-45508]: 添加“–add-opens=java.base/jdk.internal.ref=ALL-UNNAMED”,以便 Platform 可以在 Java 9+ 上访问 cleaner
  • [SPARK-45543]: 如果其他窗口函数与 rank-like 函数没有相同的窗口框架,InferWindowGroupLimit 会导致 bug
  • [SPARK-45561]: 在 MySQL Dialect 中正确转换 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 中向后兼容性中断:由于添加了 onQueryIdle 导致的 StreamingQueryListener
  • [SPARK-45670]: 在 K8s 上部署时,SparkSubmit 不支持 –total-executor-cores
  • [SPARK-45678]: 在 tryOrFetchFailedException 下覆盖 BufferReleasingInputStream.available
  • [SPARK-45786]: 不精确的 Decimal 乘法和除法结果
  • [SPARK-45814]: ArrowConverters.createEmptyArrowBatch 可能会导致内存泄漏
  • [SPARK-45896]: 表达式编码对于 Option[Seq/Date/Timestamp/BigDecimal] 的 Seq/Map 失败
  • [SPARK-45920]: 按序号分组应该是等幂的
  • [SPARK-46006]: 在 YarnSchedulerBackend 调用 stop 后,YarnAllocator 错过 clean 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]: Range 运算符 computeStats() 正确的 long 转换
  • [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]: 当 describe extended 没有 col 统计信息的一列时,出现 NPE
  • [SPARK-46562]: 在 HiveAuthFactory 中删除从 UserGroupInformation 检索 keytabFile 的操作
  • [SPARK-46590]: 倾斜连接优化后,Coalesce partiton assert 错误
  • [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]: 将 sketch 添加到 module.pycatalyst 模块的依赖项中
  • [SPARK-46861]: 避免 DAGScheduler 中的死锁
  • [SPARK-46862]: 从 CSV 数据源加载的 DataFrame 的 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 应包含 catalog 字段
  • [SPARK-46182]: 因 lastTaskRunningTime 和 lastShuffleMigrationTime 之间的竞争条件,导致在退役执行器上丢失 Shuffle 数据
  • [SPARK-46547]: 修复维护线程和流式聚合物理运算符之间的死锁问题
  • [SPARK-46628]: 在 licenses 名称中使用 SPDX 短标识符

依赖项更改

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

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

我们要感谢所有社区成员为此版本的补丁贡献。


Spark 新闻存档

最新新闻

存档