Spark 发布版本 3.1.2

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

显著变更

  • [SPARK-32924]: Web UI 按持续时间排序错误
  • [SPARK-33482]: 扩展 FileScan 的 V2 数据源阻止了交换重用
  • [SPARK-34361]: K8s 上的动态分配终止正在运行任务的执行器
  • [SPARK-34392]: Spark 3.0 以来基于偏移的 ZoneId 无效
  • [SPARK-34417]: DataFrameNaFunctions.fillMap(values: Seq[(String, Any)]) 对于包含点的列名失败
  • [SPARK-34436]: DPP 支持 LIKE ANY/ALL
  • [SPARK-34473]: 避免 DataFrameReader.schema(StructType) 中的 NPE
  • [SPARK-34482]: 修正流式查询的活动 SparkSession
  • [SPARK-34490]: 如果表被删除,表可能会被解析为视图
  • [SPARK-34497]: JDBC 连接提供程序没有从 JVM 安全上下文中移除 Kerberos 凭据
  • [SPARK-34504]: 避免不必要的视图解析并移除 performCheck 标志
  • [SPARK-34515]: 修复 getPartitionsByFilter 期间 InSet 包含空值时的 NPE
  • [SPARK-34534]: OneForOneBlockFetcher 中的新协议 FetchShuffleBlocks 导致数据丢失或正确性问题
  • [SPARK-34543]: 在 V1 ALTER TABLE .. SET LOCATION 中遵循大小写敏感性
  • [SPARK-34545]: 修复将 2 个具有不同返回类型的 Python UDF 同时应用于 2 列时结果不一致的问题
  • [SPARK-34547]: 使用子元数据属性作为回退解析
  • [SPARK-34550]: 在将过滤器推送到 Hive 元数据存储时跳过 InSet 空值
  • [SPARK-34555]: 从 DataFrame 解析元数据输出
  • [SPARK-34556]: 检查重复的静态分区列不遵守大小写敏感配置
  • [SPARK-34561]: 无法从 v2 DESCRIBE TABLE 的数据集中删除/添加列
  • [SPARK-34567]: CreateTableAsSelect 也应该更新指标
  • [SPARK-34577]: 无法从 v2 DESCRIBE NAMESPACE 的数据集中删除/添加列
  • [SPARK-34584]: 当插入分区表时分区值非法时,DSV2 行为与其他不同
  • [SPARK-34596]: NewInstance.doGenCode 不应抛出格式错误的类名错误
  • [SPARK-34599]: INSERT INTO OVERWRITE 不支持 DSv2 中包含点的分区列
  • [SPARK-34607]: NewInstance.resolved 不应抛出格式错误的类名错误
  • [SPARK-34610]: 修复 GroupedAggPandasUDFTests 中使用的 Python UDF
  • [SPARK-34613]: 修复视图未捕获禁用提示配置的问题
  • [SPARK-34630]: 添加 pyspark.version 和 pyspark.sql.Column.contains 的类型提示
  • [SPARK-34639]: 在 Analyzer.resolveExpression 中始终移除不必要的 Alias
  • [SPARK-34674]: K8s 上的 Spark 应用程序不调用 sparkContext.stop() 方法不会终止
  • [SPARK-34681]: 全外随机哈希连接在构建左侧时产生错误结果
  • [SPARK-34682]: CustomShuffleReaderExec 中“在规范化计划上操作”检查中的回归
  • [SPARK-34697]: 允许 DESCRIBE FUNCTION 和 SHOW FUNCTIONS 解释字符串连接运算符
  • [SPARK-34713]: 使用 CreateStruct 和 ExtractValue 的 Group By 导致分析失败
  • [SPARK-34714]: collect_list(struct()) 与 GROUP BY 一起使用时失败
  • [SPARK-34719]: 如果视图查询有重复的列名则失败
  • [SPARK-34723]: 修正全阶段子表达式消除的参数类型
  • [SPARK-34724]: 修复通过 getClass.getMethod 而非 getDeclaredMethod 进行的解释性评估
  • [SPARK-34727]: 浮点数转换为时间戳的结果差异
  • [SPARK-34731]: EventLoggingListener 在删除属性时出现 ConcurrentModificationException
  • [SPARK-34737]: TIMESTAMP_SECONDS 和浮点数转换之间的差异
  • [SPARK-34756]: 修复 FileScan 相等性检查
  • [SPARK-34763]: col(), $”" 和 df("name") 应正确处理带引号的列名
  • [SPARK-34766]: 不捕获视图的 Maven 配置
  • [SPARK-34768]: 遵守 Univocity 中默认的输入缓冲区大小
  • [SPARK-34770]: InMemoryCatalog.tableExists 在数据库不存在时不应失败
  • [SPARK-34772]: RebaseDateTime loadRebaseRecords 应使用 Spark 类加载器而不是上下文
  • [SPARK-34776]: 某些结构操作上的 Catalyst 错误(找不到 gen_alias
  • [SPARK-34790]: 启用 I/O 加密时批量获取随机块失败
  • [SPARK-34794]: DSL 中嵌套的高阶函数损坏
  • [SPARK-34796]: 包含 LIMIT 运算符且不带 AQE 的查询的 Codegen 编译错误
  • [SPARK-34803]: 如果 pandas 或 pyarrow 导入失败,则传递引发的 ImportError
  • [SPARK-34811]: 像 secret 和 token 一样删除 fs.s3a.access.key
  • [SPARK-34814]: LikeSimplification 应处理 NULL
  • [SPARK-34829]: 修复高阶函数结果
  • [SPARK-34833]: 正确地对关联子查询应用右填充
  • [SPARK-34834]: TransportResponseHandler 中可能存在 Netty 内存泄漏
  • [SPARK-34840]: 修复推送合并的 shuffle 块中的某些损坏情况
  • [SPARK-34845]: 当某些子指标缺失时,computeAllMetrics 可能会返回部分指标
  • [SPARK-34876]: 不可空聚合在关联子查询中可以返回 NULL
  • [SPARK-34897]: 支持在嵌套列修剪后基于索引协调模式
  • [SPARK-34909]: conv() 没有正确地将负输入转换为无符号数
  • [SPARK-34922]: 使用更好的 CBO 成本函数
  • [SPARK-34923]: 元数据输出不应总是传播
  • [SPARK-34926]: PartitionUtils.getPathFragment 应处理空值
  • [SPARK-34939]: 当无法反序列化广播的映射状态时,抛出获取失败异常
  • [SPARK-34948]: 为执行器配置映射添加 ownerReference 以修复泄漏
  • [SPARK-34949]: Executor.reportHeartBeat 即使在执行器关闭时也重新注册 blockManager
  • [SPARK-34963]: 嵌套列修剪无法从数组中提取大小写不敏感的结构字段
  • [SPARK-34970]: 在 explain() 的输出中删除映射类型选项
  • [SPARK-35014]: 可折叠表达式无法被 AttributeReference 替换
  • [SPARK-35019]: 改进 pyspark.sql.* 的类型提示
  • [SPARK-35045]: 添加内部选项以控制 univocity 中的输入缓冲区
  • [SPARK-35079]: 使用 UDF 进行转换会给出不正确的结果
  • [SPARK-35080]: 带有等价谓词的关联子查询可能返回错误结果
  • [SPARK-35087]: 修复阶段详情页面中“按执行器聚合指标”表中的某些列
  • [SPARK-35093]: AQE 列式在交换重用上不匹配
  • [SPARK-35096]: 如果模式大小写不敏感,foreachBatch 会抛出 ArrayIndexOutOfBoundsException
  • [SPARK-35106]: 当使用动态分区覆盖时,HadoopMapReduceCommitProtocol 执行了错误的重命名
  • [SPARK-35117]: UI 进度条不再突出显示正在进行的任务
  • [SPARK-35127]: 在不同阶段详情页面之间切换时,新打开页面中的条目可能为空白
  • [SPARK-35136]: LiveStage.info 的初始空值可能导致 NPE
  • [SPARK-35142]: OneVsRest 分类器对 rawPrediction 列使用了不正确的数据类型
  • [SPARK-35168]: mapred.reduce.tasks 应该是 shuffle.partitions 而不是 adaptive.coalescePartitions.initialPartitionNum
  • [SPARK-35213]: 某些 withField 模式下的 DataFrame 损坏
  • [SPARK-35226]: JDBC 数据源应接受 refreshKrb5Config 参数
  • [SPARK-35227]: 在 SparkSubmit 中用新的仓库服务替换 Bintray 作为 spark-packages 解析器
  • [SPARK-35244]: invoke 应该抛出原始异常
  • [SPARK-35278]: Invoke 应该找到参数数量正确的方法
  • [SPARK-35288]: StaticInvoke 应该找到不完全匹配参数类的方法
  • [SPARK-35359]: 当数据长度超过限制时,插入 char/varchar 数据类型的数据会失败
  • [SPARK-35381]: 修复 R API 中嵌套 DataFrame 函数中的 lambda 变量名问题
  • [SPARK-35382]: 修复 Python API 中嵌套 DataFrame 函数中的 lambda 变量名问题
  • [SPARK-35411]: TreeNode json 字符串中缺少基本信息
  • [SPARK-35482]: BasicExecutorFeatureStep 中应使用大小写敏感的 block manager 端口键
  • [SPARK-35493]: spark.blockManager.port 对驱动程序 pod 无效

依赖项变更

作为维护版本,我们在此版本中仍然升级了一些依赖项:

  • [SPARK-34752]: 升级 Jetty 到 9.4.37 以修复 CVE-2020-27223
  • [SPARK-34988]: 升级 Jetty 到 9.4.39 以修复 CVE-2021-28165
  • [SPARK-35210]: 升级 Jetty 到 9.4.40 以修复 ERR_CONNECTION_RESET 问题

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

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


Spark 新闻存档