Spark 3.5.2 版本发布

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

显著变化

  • [SPARK-45988]: 修复 Python 3.11 中的 pyspark.pandas.tests.computation.test_apply_func
  • [SPARK-45989]: 修复 Python 3.11 中的 pyspark.pandas.tests.connect.computation.test_parity_apply_func
  • [SPARK-46411]: 更改为使用 bcprov/bcpkix-jdk18on 进行测试
  • [SPARK-47368]: 移除 ParquetRowConverter 中的 inferTimestampNTZ 配置检查
  • [SPARK-47370]: 添加迁移文档:Parquet 文件上的 TimestampNTZ 类型推断
  • [SPARK-47435]: SPARK-45561 导致 mysql unsigned tinyint 溢出
  • [SPARK-47440]: SQLServer 不支持二进制比较中的 LIKE 运算符
  • [SPARK-47473]: 修正转换 postgres INFINITIES 时间戳的正确性问题
  • [SPARK-47494]: 添加迁移文档,用于说明 Spark 3.3 以来 Parquet 时间戳推断的行为更改
  • [SPARK-47537]: 使用 MySQL Connector/J 代替 MariaDB Connector/J 来连接 MySQL 数据库
  • [SPARK-47666]: 修复将 mysql bit 数组作为 LongType 读取时的 NPE
  • [SPARK-47770]: 修复 GenerateMIMAIgnore.isPackagePrivateModule 以返回 false 而不是失败
  • [SPARK-47774]: 从 MimaExcludes 中删除冗余规则
  • [SPARK-47847]: 弃用 spark.network.remoteReadNioBufferConversion
  • [SPARK-48016]: 修复使用小数时的 try_divide 函数中的错误
  • [SPARK-48068]: mypy 应该有 --python-executable 参数
  • [SPARK-48083]: 3.5 客户端 <> 4.0 服务器中 session.copyFromLocalToFs 失败
  • [SPARK-48084]: pyspark.ml.connect.evaluation 在 3.5 客户端 <> 4.0 服务器中不起作用
  • [SPARK-48086]: 客户端和服务器中的 Arrow 版本不同
  • [SPARK-48087]: 3.5 客户端 <> 4.0 服务器中 Python UDTF 不兼容
  • [SPARK-48088]: 跳过在客户端 3.5 <> 服务器 4.0 中失败的测试
  • [SPARK-48089]: 流式查询监听器在 3.5 客户端 <> 4.0 服务器中不起作用
  • [SPARK-48090]: 3.5 客户端 <> 4.0 服务器中流式异常捕获失败
  • [SPARK-48109]: 仅针对 kubernetes 模块更改启用 k8s-integration-tests
  • [SPARK-48116]: 仅在 PR 构建器和每日 Python CI 中运行 pyspark-pandas*
  • [SPARK-48132]: 仅在 PR 构建器和每日 CI 中运行 k8s-integration-tests
  • [SPARK-48133]: 仅在 PR 构建器和每日 CI 中运行 sparkr
  • [SPARK-48138]: 禁用不稳定的 SparkSessionE2ESuite.interrupt tag 测试
  • [SPARK-48167]: 跳过由 SPARK-46122 导致的已知行为更改
  • [SPARK-48178]: 仅在需要时运行 branch-3.5 的 build/scala-213/java-11-17 作业
  • [SPARK-48192]: 在分叉的存储库中启用 TPC-DS 和 docker 测试
  • [SPARK-48930]: 通过包含 accesskey 模式来编辑 awsAccessKeyId
  • [SPARK-49054]: 列默认值应支持 current_* 函数
  • [SPARK-47305]: 当用 LocalRelation 替换 Filter 的子项时,PruneFilters 错误地标记 isStreaming 标志
  • [SPARK-47307]: Spark 3.3 生成无效的 base64
  • [SPARK-47318]: AuthEngine 密钥交换需要额外的 KDF 轮
  • [SPARK-47385]: Tuple 编码器使用 Option 输入产生错误的结果
  • [SPARK-47398]: AQE 不允许扩展 InMemoryTableScanExec
  • [SPARK-47434]: 流式统计链接重定向导致 302 错误
  • [SPARK-47455]: 修复 SparkBuild.scala 中 scalaStyleOnCompileConfig 的资源处理
  • [SPARK-47463]: 当下推 iceberg 数据源的 if 表达式的过滤器时发生错误。
  • [SPARK-47503]: Spark 历史服务器无法显示以引号命名的缓存 JDBC 关系的查询
  • [SPARK-47507]: 将 ORC 升级到 1.9.3
  • [SPARK-47521]: 从外部存储读取 shuffle 数据时使用 Utils.tryWithResource
  • [SPARK-47561]: 修复有关 Alias 的分析器规则顺序问题
  • [SPARK-47633]: 使用带有 join 条件的 JOIN LATERAL 的查询的缓存未命中
  • [SPARK-47636]: 在 K8s Dockerfile 中使用 Java 17 而不是 17-jre 镜像
  • [SPARK-47646]: try_to_number 在输入错误时失败并出现 NPE
  • [SPARK-47676]: 清理已删除的 VersionsSuite 引用
  • [SPARK-47762]: 将 pyspark.sql.connect.protobuf 添加到 setup.py
  • [SPARK-47824]: pyspark.pandas.series.asof 中的不确定性
  • [SPARK-47828]: DataFrameWriterV2.overwrite 因无效计划而失败
  • [SPARK-47840]: 删除流式聚合/连接节点之间的可折叠传播
  • [SPARK-47895]: group by all 应该是幂等的
  • [SPARK-47904]: 使用 enableStableIdentifiersForUnionType 时,保留 Avro schema 中的大小写
  • [SPARK-47910]: 使用 zstd 压缩中断 shuffle 写入时发生内存泄漏
  • [SPARK-47921]: 修复 ExecuteHolder 中的 ExecuteJobTag 创建
  • [SPARK-47927]: UDF 中未遵循连接后的可为空性
  • [SPARK-48019]: 带有字典和空值的 ColumnVectors 未被正确读取/复制
  • [SPARK-48037]: SortShuffleWriter 缺少 shuffle 写入相关指标,导致数据可能不准确
  • [SPARK-48105]: 修复 HDFS 状态存储在状态存储卸载和快照同时发生时的数据损坏问题
  • [SPARK-48128]: 为 boolean 输入生成的 BitwiseCount / bit_count 代码无法编译
  • [SPARK-48172]: 修复 JDBCDialects 中的转义问题
  • [SPARK-48173]: CheckAnalsis 应该查看整个查询计划
  • [SPARK-48179]: 将 nbsphinx 固定到 0.9.3
  • [SPARK-48184]: 始终在客户端设置 dataframe.sample 的种子
  • [SPARK-48197]: 避免无效 lambda 函数的断言错误
  • [SPARK-48237]: 执行 test-dependencies.sh 后,应该删除目录 dev/pr-deps
  • [SPARK-48241]: 使用 char/varchar 类型列时 CSV 解析失败
  • [SPARK-48248]: 修复嵌套数组以遵循 inferArrayTypeFromFirstElement 的旧版配置
  • [SPARK-48265]: 推断窗口组限制批次应该进行常量折叠
  • [SPARK-48273]: PlanWithUnresolvedIdentifier 的后期重写
  • [SPARK-48286]: 分析 'exists' 默认表达式,而不是 structField 中 'current' 默认表达式到 v2 列转换
  • [SPARK-48294]: 使 nestedTypeMissingElementTypeError 区分大小写
  • [SPARK-48297]: Char/Varchar 在 TRANSFORM 子句中中断
  • [SPARK-48237]: 执行 test-dependencies.sh 后,应该删除目录 dev/pr-deps
  • [SPARK-48241]: 使用 char/varchar 类型列时 CSV 解析失败
  • [SPARK-48248]: 修复嵌套数组以遵循 inferArrayTypeFromFirstElement 的旧版配置
  • [SPARK-48265]: 推断窗口组限制批次应该进行常量折叠
  • [SPARK-48273]: PlanWithUnresolvedIdentifier 的后期重写
  • [SPARK-48286]: 分析 'exists' 默认表达式,而不是 structField 中 'current' 默认表达式到 v2 列转换
  • [SPARK-48294]: 使 nestedTypeMissingElementTypeError 区分大小写
  • [SPARK-48297]: Char/Varchar 在 TRANSFORM 子句中中断
  • [SPARK-48308]: 统一在 FileSourceStrategy 中获取没有分区列的数据模式
  • [SPARK-48428]: 由于嵌套列别名导致的 IllegalStateException
  • [SPARK-48481]: OptimizeOneRowPlan 对流式 DataFrame 不应有效
  • [SPARK-48484]: V2Write 对不同的任务尝试使用相同的 TaskAttemptId
  • [SPARK-48498]: 始终在谓词中进行字符填充
  • [SPARK-48608]: Spark 3.5: 构建失败,错误信息为 value defaultValueNotConstantError 不是 object org.apache.spark.sql.errors.QueryCompilationErrors 的成员
  • [SPARK-48642]: 由于溢出而终止任务导致的错误报告的 SparkOutOfMemoryError
  • [SPARK-48666]: 如果过滤器包含不可计算的表达式,则不应下推该过滤器
  • [SPARK-48709]: DataSourceV2 CTAS 的 Varchar 解析不匹配
  • [SPARK-48719]: 当元组包含 NULL 时,regr_slope 和 regr_intercept 聚合的结果错误
  • [SPARK-48791]: 使用 CopyOnWriteArrayList 导致的累加器注册开销导致性能下降
  • [SPARK-48843]: GlobalLimit/BindParameters 导致的无限循环
  • [SPARK-48845]: GenericUDF 无法捕获来自子 UDF 的异常
  • [SPARK-48863]: 当启用 "spark.sql.json.enablePartialResults" 时,解析 JSON 时出现 ClassCastException: class org.apache.spark.unsafe.types.UTF8String 无法转换为 class org.apache.spark.sql.catalyst.util.ArrayData
  • [SPARK-48871]: 修复 CheckAnalysis 中的 INVALID_NON_DETERMINISTIC_EXPRESSIONS 验证
  • [SPARK-48921]: 子查询中的 ScalaUDF 应该通过分析器运行
  • [SPARK-48991]: FileStreamSink.hasMetadata 处理无效路径
  • [SPARK-49000]: 处理文字时,带有 DISTINCT 的聚合给出错误结果
  • [SPARK-49005]: 使用 17-jammy 而不是 17 以防止 Python 3.12
  • [SPARK-49065]: 传统格式化程序/解析器中的 Rebase 必须支持非 JVM 默认时区
  • [SPARK-49094]: 文件源选项 ignoreCorruptFiles 对 orc 格式仅部分支持
  • [SPARK-49099]: 重构 CatalogManager.setCurrentNamespace
  • [SPARK-45587]: 在构建 GitHub Action 任务中跳过 UNIDOC 和 MIMA
  • [SPARK-45593]: 从主代码构建可运行的发行版,运行 spark-sql 时引发错误 "java.lang.ClassNotFoundException: org.sparkproject.guava.util.concurrent.internal.InternalFutureFailureAccess"
  • [SPARK-47172]: 将 Transport 块密码模式升级到 GCM
  • [SPARK-47299]: 在不同版本的 PySpark 文档的下拉菜单中使用相同的 versions.json
  • [SPARK-47734]: 通过停止流式查询来修复 pyspark.sql.dataframe.DataFrame.writeStream doctest 的不稳定性
  • [SPARK-47825]: 使 KinesisTestUtilsWriteInputFormatTestDataGenerator 被弃用
  • [SPARK-47897]: scala 2.12 中的 ExpressionSet 性能下降
  • [SPARK-48081]: 修复 NTile.checkInputDataTypes() 中当参数不可折叠或类型错误时的 ClassCastException
  • [SPARK-48292]: 还原 [SPARK-39195][SQL] 当提交的文件与任务状态不一致时,Spark OutputCommitCoordinator 应中止阶段
  • [SPARK-48391]: 在 TaskMetrics 中使用 addAll 而不是 add 函数来加速
  • [SPARK-48424]: 使 dev/is-changed.py 在失败时返回 true
  • [SPARK-48586]: 通过在 RocksDBFileManager 的 load() 中对文件映射进行深拷贝来移除 doMaintenance() 中的锁获取
  • [SPARK-48610]: 移除 ExplainUtils.processPlan 同步
  • [SPARK-48806]: 当 url_decode 失败时传递实际异常
  • [SPARK-47481]: 修复 Python linter
  • [SPARK-48535]: 更新文档,记录连接空值相关配置使用的警告
  • [SPARK-48934]: 在 applyInPandasWithState 中设置超时时,Python datetime 类型转换不正确

依赖项更改

您可以查阅 JIRA 了解 详细更改

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


Spark 新闻存档

最新新闻

存档