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 的 ID 无效
  • [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]: 如果 InSet 在 getPartitionsByFilter 期间包含空值,则修复 NPE
  • [SPARK-34534]: OneForOneBlockFetcher 中的新协议 FetchShuffleBlocks 导致数据丢失或正确性问题
  • [SPARK-34543]: 在 V1 ALTER TABLE .. SET LOCATION 中尊重区分大小写
  • [SPARK-34545]: 修复将具有不同返回类型的 2 个 Python UDF 同时应用于 2 列时出现的不一致结果
  • [SPARK-34547]: 使用子元数据属性作为回退进行解析
  • [SPARK-34550]: 在将过滤器推送到 Hive Metastore 时跳过 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 中删除不必要的别名
  • [SPARK-34674]: K8s 上的 Spark 应用程序在不调用 sparkContext.stop() 方法的情况下不会终止
  • [SPARK-34681]: 构建左侧时,完全外 shuffled 哈希连接会产生错误的结果
  • [SPARK-34682]: CustomShuffleReaderExec 中“对规范化计划进行操作”检查中的回归
  • [SPARK-34697]: 允许 DESCRIBE FUNCTION 和 SHOW FUNCTIONS 解释字符串连接运算符
  • [SPARK-34713]: 按带有 ExtractValue 的 CreateStruct 分组分析失败
  • [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(), $”" and 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 加密时,批量提取 shuffled 块失败
  • [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]: 修复推送的合并 shuffled 块中的损坏案例
  • [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 添加到执行器 configmap 以修复泄漏
  • [SPARK-34949]: Executor.reportHeartBeat 即使在 Executor 关闭时也会重新注册 blockManager
  • [SPARK-34963]: 嵌套列修剪无法从数组中提取不区分大小写的结构字段
  • [SPARK-34970]: 编辑 explain() 输出中的 map-type 选项
  • [SPARK-35014]: 可折叠的表达式不能被 AttributeReference 替换
  • [SPARK-35019]: 改进 pyspark.sql.* 上的类型提示
  • [SPARK-35045]: 添加一个内部选项来控制 univocity 中的输入缓冲区
  • [SPARK-35079]: 使用 udf 的 Transform 给出不正确的结果
  • [SPARK-35080]: 带有相等谓词的相关子查询可能会返回错误的结果
  • [SPARK-35087]: 修复阶段详细信息页面的表格 Aggregated Metrics by Executor 中的某些列
  • [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 APIs 中嵌套 DataFrame 函数中的 lambda 变量名问题
  • [SPARK-35382]: 修复 Python APIs 中嵌套 DataFrame 函数中的 lambda 变量名问题
  • [SPARK-35411]: TreeNode json 字符串中缺少重要信息
  • [SPARK-35482]: 区分大小写的块管理器端口键应该在 BasicExecutorFeatureStep 中使用
  • [SPARK-35493]: spark.blockManager.port 不适用于 driver 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 新闻存档

最新消息

存档