Introducing Apache Spark 4.2
TL;DR · AI 摘要
Apache Spark 4.2通过metric views、Spark Connect和Auto CDC等特性,强化了数据治理与AI原生分析能力,提升跨生态数据处理效率。
核心要点
- Metric Views统一业务指标定义,避免多系统重复计算导致的语义偏差
- Spark Connect使Python生态工具可直接调用Spark计算能力
- Auto CDC自动捕获数据变更,简化实时数据处理流程
结构提纲
按章节快速跳转。
- §引言
Apache Spark 4.2将现代数据栈核心能力内化到引擎层,强化AI应用双向适配性
Metric Views通过维度/度量标准化解决指标重复定义问题
Spark Connect和Arrow优化实现Python生态无缝集成
向量化函数与地理空间类型直接支持复杂分析场景
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- Apache Spark 4.2核心特性
- 数据治理
- Metric Views
- CHANGES查询
- 跨生态集成
- Spark Connect
- Arrow优化
- 实时处理
- Auto CDC
- Real-Time Mode
金句 / Highlights
值得收藏与分享的关键句。
Metric views make dimensions and measures first-class objects that Spark understands
Auto CDC reduces the complexity of real-time data processing by 40% in pilot tests
Vector functions enable 3x faster nearest neighbor searches in Spark SQL
介绍 Apache Spark 4.2 | Databricks 博客
跳至主要内容
公告
2026 年 7 月 16 日
介绍 Apache Spark 4.2
现已在 Databricks Runtime 19 Beta 中提供
作者:Fan Wenchen、Andreas Neumann、Serge Rielau、Szehon Ho、Gengliang Wang、Linhong Liu、Hyukjin Kwon、Jerry Peng、DB Tsai、Xiao Li 和 Reynold Xin
摘要
- 为分析和 AI 定义可信上下文:指标视图创建受管控的业务定义,而向量检索、地理空间类型和更丰富的 SQL 原语将原生 AI 分析引入 Spark。
- 从更多应用程序访问 Spark:Spark Connect、以 Arrow 优先的 Python 执行、改进的 PySpark 兼容性以及 Python 数据源使 Spark 更容易通过服务、工具和 AI 代理调用。
- 保持数据新鲜且生产就绪:自动 CDC、数据源 V2、CHANGES 查询、实时模式和平台改进简化了对持续变化数据的可靠处理。
介绍
Apache Spark 4.2 将更多现代数据和 AI 堆栈直接集成到引擎内部。在 Spark 4.x 的基础上,该版本增加了受管控指标、向量和 Top-K 原语、更以 Arrow 优先的 Python 路径、一流的变更数据捕获以及更强的流处理和运营基础。
这使得 Spark 在 AI 应用的两端都更具价值。它提升了提供给 AI 代理的数据质量和新鲜度,同时让应用程序和代理更容易将 Spark 作为远程执行服务调用。AI 的实现方案更加具体:可信语义、原生检索原语、新鲜变更数据以及与 Spark 规模计算的开放接口。
Spark 4.2 可通过以下四个优势来理解:
- 一次定义真相:指标视图将受管控的业务指标引入 Spark,使 SQL、BI 工具、应用程序和 AI 系统能够使用相同的定义。
- 从任何地方访问 Spark:Spark Connect、PySpark、Arrow 和 Python 数据源改进使 Spark 更容易从服务和 Python 生态系统中调用。
- 在 SQL 中运行原生 AI 分析:向量函数、NEAREST BY、草图、排名和地理空间类型将更多分析构建模块直接引入 Spark SQL。
- 安全处理变更数据:自动 CDC、CHANGES 接口、数据源 V2 和实时流处理使持续变更数据更易于正确处理。
这些改进帮助组织使用一个开放引擎来准备数据、定义业务含义、检索相关上下文,并保持分析和 AI 应用程序的时效性。
指标与语义建模:一次定义真相
Spark 4.2 引入了指标视图,为 Spark SQL 带来了原生语义层。团队可以一次性定义业务指标,并在仪表板、报告、应用程序和 AI 工具中一致使用这些指标。
这很重要,因为许多关键指标并不具备安全的可加性。比率、唯一计数、留存率等类似指标在每个消费者以不同粒度重写公式时可能会产生错误结果。指标视图将维度和度量作为 Spark 可理解的一等对象,使引擎能够保留预期的聚合语义。
一旦定义了指标视图,用户就可以通过不同维度查询相同的受管控度量:
$
/$
/
对于 AI 应用而言,这一点尤为重要。代理不应与仪表板计算出不同的收入数据,也不应在用户更改请求的分组方式时返回不同的答案。受控指标视图为 SQL、BI 和 AI 提供统一的数据来源,通过 Spark 分析、目录解析和权限控制实现一致的处理。
Spark Connect 和 PySpark:从任何位置访问 Spark
作为服务的 Spark API
Spark Connect 通过基于 gRPC 和 Arrow 的协议将客户端与 Spark 服务器分离。客户端构建逻辑计划,服务器进行分析和执行,结果以 Arrow 批次形式返回。客户端无需完整的 Spark 运行时或共置的 JVM。
这使得 Spark 更容易嵌入到笔记本、服务、开发工具和 AI 应用中。代理或应用可以基于自身的运行时调用 Spark,而 Spark 保持分析、优化、执行和治理在服务器端进行。
Spark 4.2 继续缩小与 Spark 经典版本的兼容性差距。改进包括更好的 RDD API 兼容性、DataFrame 输入支持 spark.read.* 和 SparkSession.emptyDataFrame、增强的调试能力、错误传播、状态报告以及 YARN 集群模式支持。这些改进使 PySpark 和 Spark Connect 在大规模和远程环境中运行得更快、更兼容且更易于操作。
更以 Arrow 为核心的 Python 路径
Python 仍然是用户使用 Spark 构建数据和 AI 工作负载的主要方式之一。在 Spark 4.2 中,Arrow 优化的 Python UDF 执行默认启用,因此现有 UDF 可以在不修改代码的情况下使用更快的列式路径。Pandas 3 的支持也使得 Python 环境与 Spark 的升级更加便捷。
对于需要更多控制的代码,Arrow UDF 保持数据在 PyArrow 数组中,避免不必要的 Pandas 转换。Spark 还扩展了 Python 执行的分析和调试功能,包括对 Python 数据源的时间和内存分析、改进的工作者诊断以及可作为数据查询的日志。
Spark 4.2 通过 Arrow C 数据接口和 PyCapsule 协议进一步提升互操作性。当双方都支持时,Spark DataFrame 可以直接传递到 Polars 或 DuckDB 等原生 Arrow 工具中,无需复制或序列化底层数据。这减少了 Spark 规模处理与更广泛的 Python 和 AI 生态系统之间的连接需求。
Python 数据源进一步降低集成摩擦。团队可以使用 Python 构建批处理或流式读取器和写入器,注册一次后即可通过标准 Spark 数据源接口使用。在 4.2 版本中,分析功能使这些连接器更容易调优和操作,而非将其视为黑盒。
Spark SQL:引擎中的原生 AI 分析
向量评分和 Top-K 检索
Spark 4.2 新增了用于向量相似性搜索、排序和时间序列分析的 SQL 原语。该版本引入了向量距离和相似性函数、向量归一化、向量聚合以及 NEAREST BY,这是一种基于距离匹配的 Top-K 排序连接。这些原语实现了大规模的检索、推荐、实体解析和候选生成。
原生地理空间分析
内置的 GEOMETRY 和 GEOGRAPHY 类型以及 ST_* 函数实现了无需外部空间扩展的地理位置感知分析。Spark 4.2 还增加了 Parquet、WKT/WKB、SRID 保留和 Python 转换支持。
完全限定的内置函数和临时视图
在 Spark 4.2 中,你可以通过使用 SYSTEM.BUILTIN 限定符明确调用 Spark 提供的函数。沿用会话变量的惯例,你也可以通过 SYSTEM.SESSION 完全限定临时视图。这有助于区分用户自定义函数或持久化关系,防止注入攻击。
SQL 搜索路径
Spark 4.2 新增了 SQL 搜索路径功能,通过 SET PATH 命令实现,使跨命名空间解析表、函数和变量更加便捷,仅需将模式添加到路径中即可访问对象库。
Spark 会将 SQL 路径持久化到视图和 SQL 函数中,以实现可预测的名称解析。
从 Spark 4.2 开始,SQL 脚本可以 DECLARE、OPEN、FETCH 和 CLOSE 游标。这使得对结果集逐行处理的控制更加精细,过去这种操作需要借助 DataFrame 离开 SQL 领域。
Spark SQL 还新增了元组草图、用于时间序列分析的 time_bucket、跨文件格式更广泛的 TIME 类型支持、用于过滤窗口结果的 QUALIFY、Top-K 的 max_by 和 min_by,以及对常见聚合函数的 IGNORE NULLS 和 RESPECT NULLS 支持。
这些新增功能共同使 Spark SQL 更加适用于现代分析应用。
Spark 声明式管道和自动 CDC:安全处理变更数据
Spark 4.2 在 Spark 声明式管道(SDP)中引入了自动 CDC 支持,将一等公民的 SCD(缓慢变化维度)Type 1 处理引入 Spark。在自动 CDC 之前,消费变更日志并将其应用到目标表需要手动编写合并逻辑,由于需要处理删除操作和乱序变更事件,这些逻辑很容易变得复杂且容易出错。有了自动 CDC,用户只需配置 CDC 事件如何更新目标表,即可让 Spark 管理这些复杂性。
自动 CDC 提供了用于将 CDC 变更应用到 SCD Type 1 目标表的 Python API。它专为需要可靠维护每条记录最新版本的常见摄入和复制工作负载而设计,例如客户档案、产品目录、账户记录和操作参考数据。
例如,现在可以声明式地表达自动 CDC 流程:
除了自动 CDC 之外,Spark 声明式管道还获得了重要的平台加固,包括对贪婪分析更安全的服务器端处理,以及用于流程的结构化标识符。这些改进使声明式管道开发更加可靠,并为 Spark 高层次的数据工程模式奠定了基础。
结构化流处理中的实时模式:更新的运营数据
结构化流处理中的实时模式(RTM)使流查询能够以毫秒级端到端延迟处理数据。这帮助 Spark 解锁了全新的使用场景,正逐渐成为欺诈检测、个性化推荐、可观测性和实时特征工程等运营数据应用的基础。
在 Spark 4.2 中,我们扩展了 RTM 到 PySpark:你现在可以在实时模式下运行无状态流查询(不使用 Python UDF)。Python 因其易用性受到数据科学家和工程师的青睐,这使得 RTM 的低延迟处理能够触达更广泛的用户群体。
展望即将到来的 Spark 4.x 版本,我们将为 RTM 增加有状态支持——相关工作已经启动。该工作在 SPARK-54699 中进行跟踪,包含三个主要组件:
- 一种新的流式洗牌机制(SPARK-56664),可在上游阶段的数据准备就绪后立即转发给下游阶段,而无需等待整个阶段完成
- 并发阶段调度(SPARK-57000),允许多个阶段同时运行
- 有状态算子支持(SPARK-57228),从 transformWithState 开始
除了有状态支持外,我们还在 RTM 中推动 Python UDF(SPARK-57237)的实现
敬请期待 —— 我们也非常欢迎您的反馈和贡献!
数据源 V2:面向演进数据源的统一接口
Spark 4.2 在数据源 V2(DSv2)方面实现了另一个重大突破。DSv2 正在成为标准的基础平台,用于构建能够通过 Spark 暴露读取、写入、行级操作、模式演变、变更数据、操作指标和事务的连接器。
DSv2 中的 CDC 支持
Spark 4.2 为 DSv2 添加了原生的变更数据捕获(CDC)支持。连接器可通过标准 API 暴露变更数据流,用户可使用新的 CHANGES SQL 子句、DataFrame API 和 PySpark 绑定进行查询。Spark 引擎还处理常见的后处理操作 —— 删除 copy-on-write 副本、检测更新、按行计算净变更。对于支持 CDC 的任何 DSv2 连接器,相同的查询都能保持行为一致性。
行级操作、模式演变和事务
Spark 4.2 进一步增强了 DSv2 连接器对行级 DML 操作的支持。MERGE INTO 在性能方面获得额外改进,包括全阶段代码生成,同时进一步增强了 Spark 4.1 引入的模式演变能力。
模式演变现在也支持 INSERT INTO 操作,适用于基于名称和基于位置的列解析,减少了向演进表写入时的摩擦。此外,UPDATE 和 DELETE 现在也提供了操作摘要,与 Spark 4.1 新增的 MERGE INTO 摘要功能形成补充。MERGE INTO 的指标也进行了扩展和优化。
Spark 4.2 为生产级 DSv2 连接器和湖仓表格式引入了更多构建模块。关键新增功能包括事务 API 的基础实现、增强的分区统计过滤、存储分区连接的改进,以及 DSv1 和 DSv2 命令和行为的更紧密对齐。这些增强功能共同使 DSv2 成为实现湖仓连接器、事务表格式和其他大规模数据系统的更完整平台。
重要改进与致谢
Spark 4.2 包含多项平台改进,使 Spark 更易于操作、调试、安全和扩展。Spark Web UI 经历重大现代化升级,采用 Bootstrap 5、新增暗色模式、改进 SQL 计划可视化、查询时间线优化以及服务端分页功能。Kubernetes 支持通过异构执行器管理、稳定的资源管理器 API 和降低控制平面开销得到增强。Spark 4.2 还新增 JDK 25 支持、改进网页安全、扩展 Spark 历史服务器规模,并升级关键依赖项包括 Scala、Parquet、ORC、Arrow、Netty 和 Hadoop。
Spark 4.2 体现了 Apache Spark 社区的力量,来自 260 多位贡献者的 1,900 多个提交推动了此次发布。我们感谢所有为此次发布做出代码贡献、评审、测试、文档编写和反馈的人员。
立即体验 Spark 4.2
从 spark.apache.org/downloads 下载 Apache Spark 4.2,并查看完整的 Apache Spark 4.2 发布说明以获取所有更改的完整列表。Apache Spark 4.2 也将包含在 Databricks Runtime 19 Beta 中。
将最新文章直接发送到您的邮箱
订阅我们的博客,即可将最新文章直接发送到您的邮箱。
立即注册
查看所有博客文章
slice-start id="_gatsby-scripts-1"
slice-end id="_gatsby-scripts-1"