Spark 3.2.2 版本发布

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

显著变化

  • [SPARK-37290]: 非确定性函数导致规划时间呈指数级增长
  • [SPARK-37544]: 按月间隔的时间序列生成不正确的结果
  • [SPARK-37643]: 当 charVarcharAsString 为真时,char 数据类型分区表查询不正确
  • [SPARK-37670]: 支持对去重 CTE 的谓词下推和列裁剪
  • [SPARK-37675]: 防止在 Shuffle 完成后覆盖已推送的 Shuffle 合并文件
  • [SPARK-37793]: 无效的 LocalMergedBlockData 导致任务挂起
  • [SPARK-37865]: 当 Union 的第一个子表包含重复列时,Spark 不应去重 groupingExpressions
  • [SPARK-37963]: 在 InMemoryCatalog 中重命名表后需要更新分区 URI
  • [SPARK-37995]: 当 spark.sql.optimizer.dynamicPartitionPruning.reuseBroadcastOnly 为 false 时,TPCDS 1TB q72 失败
  • [SPARK-38018]: 修复 ColumnVectorUtils.populate 以正确处理 CalendarIntervalType
  • [SPARK-38019]: ExecutorMonitor.timedOutExecutors 应该是确定性的
  • [SPARK-38023]: ExecutorMonitor.onExecutorRemoved 应将 ExecutorDecommission 视为已完成处理
  • [SPARK-38030]: Spark 3.1.1 上包含非空列的 cast 查询在 AQE 开启时失败
  • [SPARK-38042]: 当元组组件是 Array 的类型别名时,找不到编码器
  • [SPARK-38056]: 在使用 LevelDB 时,历史服务器中的结构化流处理不起作用
  • [SPARK-38073]: 更新 atexit 函数以避免后期绑定问题
  • [SPARK-38075]: 带有 order by 和 limit 的 Hive 脚本转换将返回错误行
  • [SPARK-38120]: 当分区列名为大写且分区值中包含点时,HiveExternalCatalog.listPartitions 失败
  • [SPARK-38178]: 更正 RocksDB 内存使用量测量逻辑
  • [SPARK-38180]: 允许在相关等式谓词中使用安全的向上转型表达式
  • [SPARK-38185]: 修复聚合函数为空时数据不正确的问题
  • [SPARK-38204]: 所有状态算子都有状态分区与算子分区不一致的风险
  • [SPARK-38221]: 按复杂表达式流进行分组失败
  • [SPARK-38236]: 在创建/修改表时指定的绝对文件路径被视为相对路径
  • [SPARK-38271]: 泊松采样器可能输出超出 MaxRows 的行数
  • [SPARK-38273]: decodeUnsafeRows 的迭代器应关闭底层输入流
  • [SPARK-38285]: ClassCastException: GenericArrayData 无法转换为 InternalRow
  • [SPARK-38286]: Union 的 maxRows 和 maxRowsPerPartition 可能溢出
  • [SPARK-38304]: 在 ANSI 模式下,如果索引为 null,Elt() 应返回 null
  • [SPARK-38309]: SHS 在 shuffle 读取字节和 shuffle 总块指标方面具有不正确的百分位数
  • [SPARK-38320]: (flat)MapGroupsWithState 可能会使在同一微批次中刚接收到输入的组超时
  • [SPARK-38325]: ANSI 模式:避免 HashJoin.extractKeyExprAt() 中潜在的运行时错误
  • [SPARK-38333]: DPP 导致 DataSourceScanExec java.lang.NullPointerException
  • [SPARK-38347]: transformUpWithNewOutput 中的可空性传播
  • [SPARK-38363]: 在 ANSI 模式开启时,避免 Dataset.summary() 中的运行时错误
  • [SPARK-38379]: 修复 Kubernetes 客户端模式下使用存储类挂载持久卷时的问题
  • [SPARK-38407]: ANSI Cast: 放宽非空复杂类型转换的限制
  • [SPARK-38411]: doMergeApplicationListingInternal 读取事件日志时使用 UTF-8
  • [SPARK-38412]: fromto 在 StateSchemaCompatibilityChecker 中交换
  • [SPARK-38446]: Log4j 导致的 ExecutorClassLoader 和 FileDownloadCallback 之间的死锁
  • [SPARK-38528]: 在聚合表达式流中选择生成器时出现 NullPointerException
  • [SPARK-38542]: UnsafeHashedRelation 应该序列化 numKeys
  • [SPARK-38570]: Literal 导致动态分区裁剪不正确
  • [SPARK-38579]: 请求 Restful API 可能导致 NullPointerException
  • [SPARK-38587]: 验证重命名命令的新位置应使用格式化的名称
  • [SPARK-38614]: 不要通过使用 percent_rank 的窗口下推限制
  • [SPARK-38631]: 通过 Utils.unpack() 注入任意 shell 命令
  • [SPARK-38652]: uploadFileUri 应保留文件方案
  • [SPARK-38655]: OffsetWindowFunctionFrameBase 无法找到输入不为 null 的偏移行
  • [SPARK-38677]: pyspark 在本地模式运行 rdd map 操作时挂起
  • [SPARK-38684]: 流-流外连接可能存在正确性问题,因为外部迭代器弱读一致性
  • [SPARK-38787]: 处理边缘情况时,流-流连接可能存在正确性问题
  • [SPARK-38809]: 实现在流-流连接的对称哈希实现中跳过空值的选项
  • [SPARK-38868]: 在 left_outer 连接后 assert_true 无条件失败
  • [SPARK-38916]: killTask() 和 launchTask() 之间的竞态条件导致任务未被杀死
  • [SPARK-38922]: TaskLocation.apply 抛出 NullPointerException
  • [SPARK-38931]: RocksDB 文件管理器在第一次空检查点时不会创建带有未知键数量的初始 dfs 目录
  • [SPARK-38936]: 脚本转换馈送线程应具有名称
  • [SPARK-38955]: 在 'from_csv' 和 'schema_of_csv' 中禁用 lineSep 选项
  • [SPARK-38977]: 修复相关子查询的模式裁剪问题
  • [SPARK-38990]: date_trunc 和 trunc 都因内联表中列的格式而失败
  • [SPARK-38992]: 避免在 ShellBasedGroupsMappingProvider 中使用 bash -c
  • [SPARK-39030]: 重命名 sum 以避免与内置 Python 函数重影
  • [SPARK-39061]: 对动态创建的结构数组使用 Inline 函数时,结果不正确或出现 NPE
  • [SPARK-39083]: 修复 FsHistoryProvider 中更新和清除应用数据之间的竞态条件
  • [SPARK-39084]: df.rdd.isEmpty() 导致意外的执行器失败和 JVM 崩溃
  • [SPARK-39104]: unpersist 调用时出现空指针异常
  • [SPARK-39107]: regexp_replace 处理空字符串时的静默更改
  • [SPARK-39174]: 目录加载吞没 ClassNotFoundException 的缺失类名
  • [SPARK-39259]: now() 和等效函数返回的时间戳在子查询中不一致
  • [SPARK-39283]: Spark 任务由于 TaskMemoryManager 和 UnsafeExternalSorter 之间的死锁而永远卡住
  • [SPARK-39293]: 如果类型为 string、struct、array 或 map,ArrayAggregate 的累加器应复制中间结果
  • [SPARK-39340]: DS v2 聚合下推应允许顶级列名中包含点
  • [SPARK-39376]: 在 NATURAL/USING JOIN 的子查询别名的星形扩展中,不要输出重复列
  • [SPARK-39393]: Parquet 数据源仅支持对非重复原始类型下推谓词过滤器
  • [SPARK-39419]: 当 ArraySort 的比较器返回 null 时,应失败。
  • [SPARK-39422]: SHOW CREATE TABLE 应为具有不支持的 Serde 配置的 Hive 表建议 'AS SERDE'
  • [SPARK-39447]: 只有非广播查询阶段才能传播空关系
  • [SPARK-39476]: 从 Long 转换为 Float/Double 或从 Integer 转换为 Float 时,禁用 Unwrap cast 优化
  • [SPARK-39496]: 内联评估路径无法处理 null 结构体
  • [SPARK-39505]: 转义 UI 中渲染的日志内容
  • [SPARK-39543]: 如果回退到 v1,DataFrameWriterV2 的选项应传递给存储属性
  • [SPARK-39548]: 带有窗口子句查询的 CreateView 命令遇到错误的“未找到窗口定义”问题
  • [SPARK-39570]: 内联表应允许带别名的表达式
  • [SPARK-39575]: AvroDeserializer 中 get 后 ByteBuffer 忘记倒回
  • [SPARK-39650]: 流式去重不应检查“value”的模式
  • [SPARK-39672]: NotExists 子查询因属性冲突而失败
  • [SPARK-39758]: regexp 函数的无效模式导致 NPE

依赖项更改

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

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

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


Spark 新闻存档

最新新闻

存档