Spark 发布版本 3.3.1

Spark 3.3.1 是一个维护版本,包含稳定性修复。此版本基于 Spark 的 branch-3.3 维护分支。我们强烈建议所有 3.3 用户升级到此稳定版本。

显著变化

  • [SPARK-35542]: 修复:为具有参数 `splitsArray`、`inputCols` 和 `outputCols` 的多列创建的 `Bucketizer` 在保存后无法加载
  • [SPARK-36057]: SPIP:支持定制的 Kubernetes 调度器
  • [SPARK-38034]: 优化 `TransposeWindow` 规则
  • [SPARK-38404]: 改进嵌套 CTE 引用外部 CTE 时的 CTE 解析
  • [SPARK-38614]: 不要通过使用 `percent_rank` 的窗口下推限制
  • [SPARK-38717]: 处理 Hive 的桶规范情况并保留其行为
  • [SPARK-38796]: 更新 `to_number` 和 `try_to_number` 函数以允许带有正数的 PR
  • [SPARK-39184]: 处理日期和时间戳序列中结果数组过小的问题
  • [SPARK-39200]: 使 `Fallback Storage` 完全读取内容
  • [SPARK-39340]: DS v2 聚合下推应允许顶级列名中包含点
  • [SPARK-39355]: 单列使用引用来构建 `UnresolvedAttribute`
  • [SPARK-39419]: 修复 `ArraySort` 在比较器返回 null 时抛出异常的问题
  • [SPARK-39447]: 避免 `AdaptiveSparkPlanExec.doExecuteBroadcast` 中的 `AssertionError`
  • [SPARK-39476]: 在从 `Long` 转换为 `Float`/`Double` 或从 `Integer` 转换为 `Float` 时,禁用解包转换优化
  • [SPARK-39548]: 带有窗口子句查询的 `CreateView` 命令遇到错误的“未找到窗口定义”问题
  • [SPARK-39570]: 内联表应允许带别名的表达式
  • [SPARK-39614]: K8s pod 名称遵循 DNS 子域名规则
  • [SPARK-39633]: 支持使用 `Dataframe` 选项进行 `TimeTravel` 时使用秒级时间戳
  • [SPARK-39647]: 在注册 `BlockManager` 之前向 `ESS` 注册执行器
  • [SPARK-39650]: 修复流式去重中值模式不正确的问题,并保持向后兼容性
  • [SPARK-39656]: 修复 `DescribeNamespaceExec` 中命名空间错误的问题
  • [SPARK-39657]: YARN AM 客户端应调用非静态 `setTokensConf` 方法
  • [SPARK-39672]: 修复关联子查询过滤前删除项目的问题
  • [SPARK-39758]: 修复 `regexp` 函数在无效模式下产生的 NPE
  • [SPARK-39775]: 解析 Avro schema 时禁用默认值验证
  • [SPARK-39806]: 访问分区表上的 `_metadata` 可能导致查询崩溃
  • [SPARK-39833]: 禁用 DSv1 中的 Parquet 列索引,以修复分区和数据列重叠时的正确性问题
  • [SPARK-39835]: 修复 `EliminateSorts` 移除局部排序下的全局排序问题
  • [SPARK-39839]: 在 `UnsafeRow` 结构完整性检查中,处理 `offsetAndSize` 非零的 null 变长 `Decimal` 特殊情况
  • [SPARK-39847]: 修复 `RocksDBLoader.loadLibrary()` 中调用线程中断时的竞态条件
  • [SPARK-39857]: `V2ExpressionBuilder` 对 `In` 谓词使用了错误的 `LiteralValue` 数据类型
  • [SPARK-39867]: 全局限制不应继承 `OrderPreservingUnaryNode`
  • [SPARK-39887]: `RemoveRedundantAliases` 应保留使投影节点输出唯一的别名
  • [SPARK-39896]: `UnwrapCastInBinaryComparison` 应在 `In/InSet` 的字面量下转型失败时起作用
  • [SPARK-39900]: 解决二进制格式谓词下推中的部分或否定条件
  • [SPARK-39911]: 优化全局 `Sort` 为 `RepartitionByExpression`
  • [SPARK-39915]: `Dataset.repartition(N)` 可能无法创建 N 个非 AQE 分区
  • [SPARK-39915]: 确保 AQE 中的输出分区是用户指定的
  • [SPARK-39932]: `WindowExec` 应清除最终分区缓冲区
  • [SPARK-39951]: 更新 Parquet V2 嵌套字段的列式检查
  • [SPARK-39952]: `SaveIntoDataSourceCommand` 应重新缓存结果关系
  • [SPARK-39962]: 当分组属性为空时应用投影
  • [SPARK-39976]: `ArrayIntersect` 应正确处理左表达式中的 null
  • [SPARK-40002]: 不要通过使用 `ntile` 的窗口下推限制
  • [SPARK-40065]: 也将 `ConfigMap` 挂载到具有非默认配置文件的执行器上
  • [SPARK-40079]: 为空输入情况添加 `Imputer inputCols` 验证
  • [SPARK-40089]: 修复某些 `Decimal` 类型的排序问题
  • [SPARK-40117]: 在 `DataFrameWriterV2.overwrite` 中将条件转换为 Java
  • [SPARK-40121]: 初始化用于 Python UDF 的投影
  • [SPARK-40132]: 将 `rawPredictionCol` 恢复到 `MultilayerPerceptronClassifier.setParams`
  • [SPARK-40149]: 通过 `Project` 传播元数据列
  • [SPARK-40152]: 修复 `split_part` 代码生成编译问题
  • [SPARK-40169]: 不要下推与数据 schema 无关的 Parquet 过滤器
  • [SPARK-40212]: SparkSQL 的 `castPartValue` 未能正确处理 `byte`、`short` 或 `float`
  • [SPARK-40213]: 支持 Latin-1 字符的 ASCII 值转换
  • [SPARK-40218]: `GROUPING SETS` 应保留分组列
  • [SPARK-40228]: 如果子表达式不是廉价表达式,则不要简化 `multiLike`
  • [SPARK-40247]: 修复 `BitSet` 相等性检查
  • [SPARK-40280]: 添加对带注解的 `int` 和 `long` 的 parquet 下推支持
  • [SPARK-40297]: 嵌套在 CTE 主体中的 CTE 外部引用无法解析
  • [SPARK-40362]: 修复 `BinaryComparison` 规范化
  • [SPARK-40380]: 修复 `InvokeLike` 的常量折叠,以避免计划中嵌入不可序列化的字面量
  • [SPARK-40385]: 修复伴生对象构造函数的解释路径
  • [SPARK-40389]: 如果转换可能溢出,Decimal 不能向上转换为整型
  • [SPARK-40468]: 修复 CSV 中选择 `_corrupt_record` 时的列剪枝问题
  • [SPARK-40508]: 将未知分区视为 `UnknownPartitioning`
  • [SPARK-40535]: 修复当输入行为空时 `AggregatingAccumulator` 的缓冲区不会被创建的错误
  • [SPARK-40562]: 添加 spark.sql.legacy.groupingIdWithAppendedUserGroupBy
  • [SPARK-40612]: 修复非 YARN 资源管理器上用于委托令牌续订的主体
  • [SPARK-40660]: 切换到 `XORShiftRandom` 以分布元素
  • [SPARK-40703]: 在 `SinglePartition` 上引入混洗以提高并行度

依赖项变更

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

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

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


Spark 新闻存档