Spark 3.1.1 版本发布

Apache Spark 3.1.1 是 3.x 系列的第二个版本。此版本增加了 Python 类型注释和 Python 依赖管理支持,作为 Project Zen 的一部分。其他主要更新包括改进的 ANSI SQL 合规性支持、结构化流中的历史服务器支持、Kubernetes 的全面可用性 (GA) 以及 Kubernetes 和 Standalone 中的节点退役。此外,此版本继续专注于可用性、稳定性和完善,同时解决了大约 1500 个问题。

要下载 Apache Spark 3.1.1,请访问下载页面。您可以查阅 JIRA 以获取详细更改。我们在此处整理了高级更改列表,按主要模块分组。

Core 和 Spark SQL

亮点

ANSI SQL 兼容性增强

性能增强

  • 无 shuffle 服务的本地主机 shuffle 数据读取 (SPARK-32077)
  • 删除重新分区节点之前冗余排序 (SPARK-32276)
  • 部分下推谓词 (SPARK-32302, SPARK-32352)
  • 通过展开下推过滤器 (SPARK-33302)
  • 通过 CNF 转换通过 Join 推送更多可能的谓词 (SPARK-31705)
  • 通过保留广播哈希连接的输出分区来删除 shuffle (SPARK-31869)
  • 通过改进重新排序连接键来删除 shuffle (SPARK-32282)
  • 通过规范化输出分区和排序顺序来删除 shuffle (SPARK-33399)
  • 改进的 Shuffled Hash Join (SPARK-32461)
    • 保留 shuffled hash join 构建端分区 (SPARK-32330)
    • 保留 hash join (BHJ 和 SHJ) 流端排序 (SPARK-32383)
    • 合并 shuffled hash join 的存储桶表 (SPARK-32286)
    • 为 shuffled hash join 添加代码生成 (SPARK-32421)
    • 支持 shuffled hash join 中的完全外部连接 (SPARK-32399)
  • 支持使用 whole-stage-codegen 在项目中消除子表达式 (SPARK-33092)
  • 支持条件表达式中的子表达式消除 (SPARK-33337)
  • 支持解释表达式求值的子表达式消除 (SPARK-33427)
  • 支持解释谓词的子表达式消除 (SPARK-33540)
  • 其他优化器规则
    • 规则 ExtractSingleColumnNullAwareAntiJoin (SPARK-32290)
    • 规则 EliminateNullAwareAntiJoin (SPARK-32573)
    • 规则 EliminateAggregateFilter (SPARK-32540)
    • 规则 UnwrapCastInBinaryComparison (SPARK-32858)
    • 规则 DisableUnnecessaryBucketedScan (SPARK-32859)
    • 规则 CoalesceBucketsInJoin (SPARK-31350)
    • 从没有项目的生成中修剪不必要的嵌套字段 (SPARK-29721)
    • 从聚合和展开中修剪不必要的嵌套字段 (SPARK-27217)
    • 从 repartition-by-expression 和 join 中修剪不必要的嵌套字段 (SPARK-31736)
    • 修剪 cosmetic variations 上不必要的嵌套字段 (SPARK-32163)
    • 从 window 和 sort 中修剪不必要的嵌套字段 (SPARK-32059)
    • 优化 CreateArray/CreateMap 的大小以作为其子级的大小 (SPARK-33544)

可扩展性增强

  • 阶段级别资源配置和调度 (SPARK-27495)
  • 用于持久化 shuffle 数据的远程存储 (SPARK-25299)
  • 允许将自定义 shuffle 管理器与外部 shuffle 服务一起使用 (SPARK-33037)
  • 在 DataSourceV2 上添加 SupportsPartitions API (SPARK-31694)
  • 在 DataSourceV2 上添加 SupportsMetadataColumns API (SPARK-31255)
  • 使 SQL 缓存序列化可插拔 (SPARK-32274)
  • 在 TableCatalog.dropTable 中为 v2 目录引入“purge”选项 (SPARK-33364)

连接器增强

功能增强

其他值得注意的变更

  • 在 Spark 文档站点中提供搜索功能 (SPARK-33166)
  • 默认使用 Apache Hadoop 3.2.0 (SPARK-32058, SPARK-32841)
  • 将 Apache Arrow 升级到 2.0.0 (SPARK-33213)
  • Kubernetes GA (SPARK-33005)
  • 在 thrift server 中启用 Java 8 时间 API (SPARK-31910)
  • 在 UDF 中启用 Java 8 时间 API (SPARK-32154)
  • 使用小数的聚合求和的溢出检查 (SPARK-28067)
  • 修复动态分区覆盖模式下的提交冲突 (SPARK-27194, SPARK-29302)
  • 删除对 slave、blacklist 和 whitelist 的引用 (SPARK-32004, SPARK-32036, SPARK-32037)
  • 删除 shuffle map stage 的任务结果大小检查 (SPARK-32470)
  • 通用化 ExecutorSource 以公开用户给定的文件系统方案 (SPARK-33476)
  • 添加 StorageLevel.DISK_ONLY_3 (SPARK-32517)
  • 在 executors 的 Web UI 中公开 executor 内存指标 (SPARK-23432)
  • 在 Stages 选项卡中的 stage 级别公开 executor 内存指标 (SPARK-26341)
  • 修复 YARN 集群模式下显式设置的 spark.ui.port (SPARK-29465)
  • 添加 spark.submit.waitForCompletion 配置,以控制 Standalone 集群模式下的 spark-submit 退出 (SPARK-31486)
  • 不要为带有内置 Hadoop 的 Spark 发行版传播 Hadoop 的 classpath (SPARK-31960)
  • 修复在高负载下 SHS 中作业间歇性消失的问题 (SPARK-33841)
  • 在 SHS 中编辑应用程序日志的敏感属性 (SPARK-33504)
  • 设置 yarn.Client 以打印到驱动程序 stdout/stderr 的直接链接 (SPARK-33185)
  • 修复未能存储 broadcast 片段时的内存泄漏问题 (SPARK-32715)
  • 使 BlockManagerMaster 驱动程序心跳超时可配置 (SPARK-34278)
  • 统一并完善缓存行为 (SPARK-33507)

行为变更

请阅读每个组件的迁移指南:Spark CoreSpark SQL

编程指南:Spark RDD 编程指南Spark SQL、DataFrames 和 Datasets 指南

PySpark

Project Zen

其他值得注意的变更

  • Stage Level Scheduling APIs (SPARK-29641)
  • 删除确定性 PythonUDF 调用的重复数据 (SPARK-33303)
  • 在 PySpark 函数中支持高阶函数 (SPARK-30681)
  • 支持数据源 v2x 写入 API (SPARK-29157)
  • 在 PySpark 函数中支持 percentile_approx (SPARK-30569)
  • 在 PySpark DataFrame 中支持 inputFiles (SPARK-31763)
  • 在 PySpark Column 中支持 withField (SPARK-32835)
  • 在 PySpark Column 中支持 dropFields (SPARK-32511)
  • 在 PySpark 函数中支持 nth_value (SPARK-33020)
  • 支持 acosh、asinh 和 atanh (SPARK-33563)
  • 在 PySpark SparkContext 中支持 getCheckpointDir 方法 (SPARK-33017)
  • 支持在 unionByName 中填充缺失列的 null 值 (SPARK-32798)
  • 将 cloudpickle 更新到 v1.5.0 (SPARK-32094)
  • 添加对带有 Arrow 的 PySpark 的 MapType 支持 (SPARK-24554)
  • DataStreamReader.table 和 DataStreamWriter.toTable (SPARK-33836)

行为变更

请阅读 PySpark 的迁移指南。

编程指南:PySpark 入门PySpark 用户指南

结构化流

性能增强

  • 缓存超出 maxFilesPerTrigger 的已提取文件列表作为未读文件 (SPARK-30866)
  • 简化文件流源和接收器元数据日志的逻辑 (SPARK-30462)
  • 如果查询从 compact 批次重新启动,则避免两次读取 compact 元数据日志 (SPARK-30900)

功能增强

其他值得注意的变更

  • 为流式状态存储引入 schema 验证 (SPARK-31894)
  • 支持在状态存储中使用不同的压缩编解码器 (SPARK-33263)
  • Kafka 连接器无限等待,因为元数据永远不会更新 (SPARK-28367)
  • 将 Kafka 升级到 2.6.0 (SPARK-32568)
  • Structured Streaming UI 页面的分页支持 (SPARK-31642, SPARK-30119)
  • Structured Streaming UI 中的状态信息 (SPARK-33223)
  • Structured Streaming UI 中的 Watermark 间隙信息 (SPARK-33224)
  • 在 SS UI 上公开状态自定义指标信息 (SPARK-33287)
  • 添加一个关于晚于 Watermark 的行数的新指标 (SPARK-24634)

行为变更

请阅读 Structured Streaming 的迁移指南。

编程指南:Structured Streaming 编程指南

MLlib

亮点

  • LinearSVC 块化输入向量 (SPARK-30642)
  • LogisticRegression 块化输入向量 (SPARK-30659)
  • LinearRegression 块化输入向量 (SPARK-30660)
  • AFT 块化输入向量 (SPARK-31656)
  • 在 ML 中添加对关联规则的支持 (SPARK-19939)
  • 为 LinearSVCModel 添加训练摘要 (SPARK-20249)
  • 为 RandomForestClassificationModel 添加摘要 (SPARK-23631)
  • 为 FMClassificationModel 添加训练摘要 (SPARK-32140)
  • 为 MultilayerPerceptronClassificationModel 添加摘要 (SPARK-32449)
  • 向 SparkR 添加 FMClassifier (SPARK-30820)
  • 添加 SparkR LinearRegression 包装器 (SPARK-30818)
  • 向 SparkR 添加 FMRegressor 包装器 (SPARK-30819)
  • 为 vector_to_array 添加 SparkR 包装器 (SPARK-33040)
  • 自适应块化实例 - LinearSVC (SPARK-32907)
  • 使 CrossValidator/TrainValidateSplit/OneVsRest Reader/Writer 支持 Python 后端估计器/评估器 (SPARK-33520)
  • 通过 GEMV 提高 ML ALS recommendForAll 的性能 (SPARK-33518)
  • 添加 UnivariateFeatureSelector (SPARK-34080)

其他值得注意的变更

  • GMM 计算摘要并在一个作业中更新分布 (SPARK-31032)
  • 移除 ChiSqSelector 对 mllib.ChiSqSelectorModel 的依赖 (SPARK-31077)
  • 展平 testChiSquare 中测试结果的 dataframe (SPARK-31301)
  • MinHash keyDistance 优化 (SPARK-31436)
  • 基于三角不等式的 KMeans 优化 (SPARK-31007)
  • 在 ClusteringEvaluator 中添加权重支持 (SPARK-31734)
  • 在 Evaluators 中添加 getMetrics (SPARK-31768)
  • 在 LinearRegressionSummary 中添加实例权重支持 (SPARK-31944)
  • 向 CrossValidator 添加用户指定的 fold 列 (SPARK-31777)
  • 特征和调优中的 ML params 默认值对等 (SPARK-32310)
  • 修复 KMeans/BiKMeans 中的双重缓存问题 (SPARK-32676)
  • aft 转换优化 (SPARK-33111)
  • FeatureHasher 转换优化 (SPARK-32974)
  • 为 dataframe 列添加 array_to_vector 函数 (SPARK-33556)
  • 分类、回归、聚类和 fpm 中的 ML params 默认值对等 (SPARK-32310)
  • Summary.totalIterations 大于 maxIters (SPARK-31925)
  • 树模型预测优化 (SPARK-32298)

行为变更

请阅读 MLlib 的迁移指南。

编程指南:机器学习库 (MLlib) 指南

SparkR

行为变更

请阅读迁移指南以了解详情。

编程指南:SparkR (R on Spark)

GraphX

编程指南:GraphX 编程指南

弃用和移除

  • 删除 Python 2.7、3.4 和 3.5 的支持 (SPARK-32138)
  • 删除 R < 3.5 的支持 (SPARK-32073)
  • 移除 hive-1.2 发行版 (SPARK-32981)
  • 移除对 org.spark-project.hive 的引用 (SPARK-20202)
  • 弃用在 Standalone 中同一主机上支持多个 worker 的功能 (SPARK-31018)

已知问题

  • [SPARK-33392] 在 V1 ALTER TABLE .. SET LOCATION 中尊重区分大小写
  • [SPARK-34531] 删除 PrometheusServlet 中的 Experimental API 标签
  • [SPARK-34515] 修复 getPartitionsByFilter 期间 InSet 包含 null 值时发生的 NPE
  • [SPARK-34497] JDBC 连接提供程序未从 JVM 安全上下文中删除 kerberos 凭据
  • [SPARK-34490] 如果表被删除,则该表可能被解析为视图
  • [SPARK-34473] 避免 DataFrameReader.schema(StructType) 中的 NPE
  • [SPARK-34436] DPP 支持 LIKE ANY/ALL

鸣谢

最后但同样重要的是,如果没有以下贡献者,此版本是不可能实现的:Abhishek Dixit, Adam Binford, Ajith S, Akshat Bordia, Alessandro Patti, Alex Favaro, Ali Afroozeh, Ali Smesseim, Allison Wang, Ankit Srivastava, Anton Okolnychyi, Antonin Delpeuch, Artsiom Yudovin, Arwin Tio, Attila Zsolt Piros, Baohe Zhang, Bo Yang, Bo Zhang, Brandon Jiang, Bruce Robbins, Bryan Cutler, CC Highman, Chandni Singh, Chao Sun, Chen Zhang, Cheng Su, Chuliang Xiao, DB Tsai, Dale Clarke, Daniel Himmelstein, Daniel Moore, David Toneian, Denis Pyshev, Devesh Agrawal, Dilip Biswal, Dmitry Sabanin, Dongjoon Hyun, Du Ripeng, Emilian Bold, Eren Avsarogullari, Eric Lemmon, Eric Wu, Erik Krogen, Fabian Höring, Farhan Khan, Farooq Qaiser, Fei Wang, Fokko Driesprong, Frank Yin, Fuwang Hu, Gabor Somogyi, Gengliang Wang, Gera Shegalov, German Schiavon Matteo, Goki Mori, Guangxin Wang, Gustavo Martin Morcuende, Herman Van Hovell, Holden Karau, Huang Yi, Haejoon Lee, Huaxin Gao, Hyukjin Kwon, Izek Greenfield, Jackey Lee, Jacob Kim, Jalpan Randeri, Jatin Puri, Jiaan Geng, Jinxin Tang, Josh Soref, Jonathan Lafleche, Jungtaek Lim, Karen Feng, Karol Chmist, Kaxil Naik, Kazuaki Ishizaki, Ke Jia, Keiji Yoshida, Kent Yao, Kevin Su, Kevin Wang, Koert Kuipers, Kousuke Saruta, Kyle Bendickson, Lantao Jin, Leanken Lin, Liang Zhang, Liang-Chi Hsieh, Linhong Liu, Lipeng Zhu, Lu Lu, Luca Canali, Maciej Szymkiewicz, Manu Zhang, Marcelo Vanzin, Maryann Xue, Matthew Cheah, Maxim Gekk, Michael Chirico, Michael Munday, Michał Wieleba, Min Shen, Nan Zhu, Nicholas Chammas, Nicholas Marcott, Nik Vanderhoof, Onur Satici, Pablo Langa, Pascal Gillet, Paul Reidy, Pavithra Ramachandran, Pedro Rossi, Peter Toth, Philipse Guo, Piotr Grzegorski, Prakhar Jain, Prashant Sharma, Qianyang Yu, Qilong Su, Rajat Ahuja, Rakesh Raushan, Rameshkrishnan Muthusamy, Raphael Auv, Richard Penney, Robert (Bobby) Evans, Rohit Mishra,Ruifeng Zheng, Ryan Blue, Ryotaro Tsuzuki, Samir Khan, Samuel Souza, Sandeep Katta, Sander Goos, Saurabh Chawla, Sean Owen, Seongjin Cho, Shane Knapp, Shanyu Zhao, Shaoyun Chen, Shixiong Zhu, Shruti Gumma, Srinivas Rishindra Pothireddi, Stavros Kontopoulos, StefanXiepj, Stijn De Haes, Stuart White, Sudharshann D, Sunitha Kambhampati, Takeshi Yamamuro, Takuya UESHIN, Tanel Kiis, Tathagata Das, Terry Kim, Thomas Graves, Tianshi Zhu, Tom Howland, Tom Van Bussel, Udbhav Agrawal, Uncle Gen, Utkarsh Agarwal, Venkata Krishnan Sowrirajan, Vlad Glinsky, Warren Zhu, Weichen Xu, Wenchen Fan, William Hyun, Wing Yew Poon, Xianyin Xin, Xiao Li, Xiduo You, Xingbo Jiang, Xinrong Meng, Xinyi Yu, Xuedong Luan, Yang Jie, Yaroslav Tkachenko, Ye Zhou, Yi Wu, Yi Zhu, Yu Zhong, Yuanjian Li, Yuexin Zhang, Yuming Wang, Yuning Zhang, Zhen Li, Zhenhua Wang, Zhicheng Jin, Zirui Xu, Zuo Dao, akiyamaneko, artiship, cristichircu, dzlab, huangtianhua, liucht-inspur, manubatham20, waitinfuture, wang-zhun, yzjg


Spark 新闻存档

最新新闻

存档