内容提要
Databricks宣布Spark声明式管道(SDP)的实时模式(RTM)正式可用。RTM采用持续流式处理,端到端延迟达毫秒级,比Flink快至92%。用户可在SDP中构建欺诈检测、实时个性化、特征计算等低延迟管道,并通过ForEach sink写入Lakebase、Redis等OLTP存储。该功能统一了流处理框架,减少运维开销,无需单独维护Flink等引擎。
延伸解读
实时模式如何实现毫秒级延迟
RTM 是 Spark Structured Streaming 引擎的演进,通过持续流式处理、同时运行所有查询阶段,并在数据产生后立即在阶段间传递,从而实现端到端毫秒级延迟。这与传统微批处理架构不同,后者需要等待批次完成。文章提到 RTM 比传统微批架构快至 100 倍,并在特征计算工作负载上比 Flink 快至 92%。
统一流处理框架的运维价值
RTM 让 SDP 覆盖所有流处理场景,包括低延迟运营型管道。用户无需单独维护 Flink 等专用引擎,从而避免重复代码库、碎片化治理模型和额外运维开销。统一框架意味着一个可观测性栈、一个计费模型,并且 RTM 流还能获得 SDP 的无版本升级和低停机维护等特性。
实时特征计算与在线存储写入
RTM 支持实时特征计算,例如计算用户过去 10 分钟的交易总额等滚动窗口聚合,并在毫秒内写入在线存储。通过 ForEach sink,用户可以将结果写入 Lakebase、Redis 或其他 OLTP 存储,无需离线到在线的同步。Databricks 特征库使用该架构实现了从 Kafka 到在线特征存储的 p99 延迟 200 毫秒。
启用 RTM 的配置要点
要使用 RTM,管道需设置为连续模式,并设置 spark.databricks.streaming.realTimeMode.enabled 为 true。然后使用 dp.create_sink() 定义输出目标,并通过 @dp.update_flow 装饰器设置 pipelines.trigger 为 "RealTime" 且 target 指向该 sink。对于自定义 sink,需定义 writer 实现 open、process 和 close 方法,并注册为 foreach_sink。
Q&A
Spark声明式管道(SDP)的实时模式(RTM)现在正式可用了吗?
是的,Databricks宣布Spark声明式管道(SDP)的实时模式(RTM)已正式可用(Generally Available)。
RTM如何实现毫秒级延迟?
RTM通过持续流式处理数据、同时运行所有查询阶段,并在数据产生后立即在阶段间传递,从而实现端到端毫秒级延迟。
RTM相比Flink在性能上有什么优势?
在实际客户的特征计算工作负载基准测试中,RTM比Flink等专用引擎快高达92%。
RTM适用于哪些场景?
RTM适用于需要毫秒级决策的运营工作负载,例如欺诈检测、实时个性化、实时推荐系统和实时特征计算。
如何在SDP中启用实时模式?
需要将管道模式设置为连续(continuous),并设置spark.databricks.streaming.realTimeMode.enabled为true。然后使用dp.create_sink()定义输出目标,并使用@dp.update_flow装饰器,将pipelines.trigger设置为"RealTime",target指向sink。
实时管道能否写入Lakebase或Redis等OLTP存储?
可以。通过定义ForEach sink,实现open、process和close方法的writer,并将实时流指向它,即可写入Lakebase、Redis或任何其他OLTP存储。