跳到正文
Databricks Blog·· 3 小时前AI 评分40

Databricks 宣布 Spark Declarative Pipelines 实时模式正式可用

Announcing General Availability of Real-Time Mode for Spark Declarative Pipelines on Databricks

AI 导读

Databricks 宣布 Spark Declarative Pipelines(SDP)的实时模式(RTM)正式可用,可在毫秒级处理流数据,无需再维护 Flink 等独立引擎。

正文 · AI 翻译

去年,我们推出了实时模式(RTM),使客户能够构建低延迟的运营用例。这是一项颠覆性创新,因为它让客户能够在毫秒级处理流式数据,速度比传统微批架构快达 100 倍。此外,客户不再需要在 Spark 之外维护 Flink 等独立的专用引擎,从而消除了重复的代码库、碎片化的治理模型和运维开销。

今天,我们宣布Spark 声明式管道(SDP)中的 RTM现已正式可用。SDP 已成为在 Databricks 上构建流式和 ETL 管道的标准方式,可自动处理依赖解析、增量处理、编排、故障恢复和数据质量强制。借助 RTM,客户可以构建运营级低延迟管道,同时保留 SDP 的所有这些优势。无论是用于欺诈评分、实时告警,还是将新鲜特征推送到运营存储,你现在都可以在这些用例中使用 SDP。

什么是实时模式(RTM)?

RTM 是 Spark Structured Streaming 引擎的演进版本,可实现毫秒级的端到端延迟。它通过持续流式传输数据、同时运行所有查询阶段,并在数据产生后立即在阶段之间传递数据来实现这一点。如需深入了解完整架构,请阅读博客“打破微批处理壁垒:Apache Spark 实时模式的架构”。

RTM 可以支持任何受益于在毫秒内将数据转化为决策的工作负载。一些示例用例包括欺诈检测、实时个性化、实时推荐系统和实时特征计算。我们在执行特征计算的实际客户工作负载上,将 RTM 与 Apache Flink 进行了基准测试,RTM 比 Flink 等专用引擎快达 92%。以下是基准测试结果。有关所引用数据集和查询的更多信息,请参阅此GitHub 仓库。

Apache Spark Real-Time Mode vs. Apache Flink

为什么在 Spark 声明式管道上使用 RTM

客户越来越多地将其 ETL 工作负载默认交给 SDP。借助 RTM,SDP 现在支持所有流式工作负载,包括运营级低延迟流式处理,使客户能够在所有管道中使用单一框架。一个框架意味着一个可观测性栈、一种计费模式,并且不会因不同 API 而产生碎片化。

SDP 无服务器更进一步。无需选择计算资源,也无需调整集群规模。你无需任何复杂的基础设施调优即可获得亚秒级延迟,并且只需为查询使用的核心付费。 RTM 流还可获得 SDP 功能,例如无版本升级和低停机维护,从而减少运维工作和升级带来的中断。

RTM on SDP 能立即产生影响的用例之一是实时特征计算。用于欺诈检测或个性化的 ML 模型依赖新鲜信号,例如用户在过去 10 分钟内的总交易金额,以做出准确预测。计算这些滚动窗口聚合并在毫秒内将其写入在线存储,正是 RTM on SDP 弥合差距的地方。Databricks Feature Store 使用这一确切架构,实现从 Kafka 到在线特征存储的端到端 p99 延迟 200ms。

开始使用 RTM on SDP

第 1 步:配置管道

实时模式要求管道模式为 continuous,并将 spark.databricks.streaming.realTimeMode.enabled 设置为 true 接管。

第 2 步:定义实时更新流

实时模式需要更新流。使用 dp.create_sink() 定义输出目标,然后使用 @dp.update_flow 装饰器,将 pipelines.trigger 设置为 "RealTime",并将 target 指向接收器。

有关支持的源和接收器,请参阅文档。

将特征写入任意自定义接收器

欺诈检测或实时个性化等用例不仅要求特征实时计算,还要求它们落入可查询的低延迟存储中。欺诈模型需要在客户最新交易清算之前获取该交易,而个性化引擎需要读取用户刚刚浏览的内容。

如今,你可以使用 ForEach 接收器从 SDP 写入任意自定义接收器,例如 Lakebase、Redis 或任何其他 OLTP 存储。定义写入器,将其注册为 foreach_sink,并将其连接到 update_flow。

特征在生成后几毫秒内即落入你的运营存储,中间无需离线到在线的同步。应用程序和模型可以以超低延迟查询它们。 
无服务器上的 RTM 下一步是什么?

  • 以更低成本运行 RTM 管道:将多个 RTM 流打包到单个管道中,而不是让每个查询都启动自己的资源。系统还会根据工作负载自动调整源分区和 shuffle 分区,因此用户无需手动调整大小。
  • 扩展的接收器支持:为 SDP 提供原生 Lakebase 接收器,内置批处理、自动重试和 UC 管理的身份验证。

结论

RTM 将 Spark 声明式管道扩展到一类新的工作负载,即需要对流式数据立即响应的运营型、延迟敏感型应用程序。通过为你团队已在使用的 SDP API 带来亚秒级延迟,它消除了为你最时间关键的管道运营单独框架或引擎的需要。无论你是在构建欺诈检测管道、个性化引擎还是 ML 特征计算系统,实时模式都能以 SDP 的简洁性为你提供应用程序所需的延迟。

Spark 声明式管道上的实时模式现已正式可用。

技术资源

查看以下资源以开始使用 SDP 上的 RTM:

常见问题

Spark 声明式管道中的实时模式(RTM)是什么?

实时模式(RTM)让 Spark 声明式管道(SDP)以毫秒级的端到端延迟处理流式数据。它持续流式传输数据,同时运行所有查询阶段,并在数据产生后立即在阶段之间传递数据。实时管道受益于 SDP 的编排和自动故障恢复。

实时模式在 Spark 声明式管道中可用吗?

是的。Spark 声明式管道上的实时模式现已正式可用。它将 Spark Structured Streaming 中已有的实时模式引入 SDP 管道。

如何在管道中开启实时模式?

将管道设置为 continuous 模式,并将 spark.databricks.streaming.realTimeMode.enabled 设置为 true。然后定义一个更新流,将 pipelines.trigger 设置为 "RealTime",并将目标指向一个 sink。

实时管道能否写入 Lakebase 或其他 OLTP 存储?

可以。定义一个 ForEach sink,其 writer 实现 open、process 和 close,然后将实时流指向它。这适用于 Lakebase、Redis 或任何其他 OLTP 存储。

Spark Declarative Pipelines 中的 Real-Time Mode 是为哪些用例构建的?

Real-Time Mode 专为将流式数据在毫秒内转化为决策的运营工作负载而构建。示例包括欺诈检测、实时个性化、实时推荐和实时特征计算。Databricks 特征存储使用此架构,实现了从 Apache Kafka 到在线特征存储的 200 毫秒 p99 延迟。

来源:Databricks Blog · databricks.com