写点什么

Databricks 为 Apache Spark 提供了 Spark 声明式管道

作者:Patrick Farry

  • 2025-07-04
    北京
  • 本文字数:1206 字

    阅读完需:约 4 分钟

大小:457.36K时长:02:36
Databricks为Apache Spark提供了Spark声明式管道

在 6 月 10 日至 12 日于美国旧金山举行的Databricks Data+AI峰会上,Databricks 宣布将Delta Live Tables(DLT)背后的技术贡献给Apache Spark项目,这个项目中,它将被称为 Spark 声明式管道(Spark Declarative Pipelines)。这一举措将使 Spark 用户更容易开发和维护流式管道,并进一步体现了 Databrick 对开源的承诺。

 

这个新特性允许开发人员定义数据流管道,而不需要在 Spark 中创建常见的命令式命令。虽然这些变化简化了编写和维护管道代码的任务,但用户仍需要理解 Spark 的运行时行为,并能够解决性能和正确性等问题。

 

一篇描述新功能的博文中,Databricks 写道,可以使用 SQL 语法或通过一个简单的 Python SDK 来定义管道,该 SDK 声明流式数据源、表及其关系,而不是编写命令式 Spark 命令。该公司声称这将减少对 Apache Airflow 等编排器管理管道的需求。

 

在后台,框架解释查询,然后创建依赖图并优化执行计划。

 

声明式管道支持来自流式数据源(如 Apache Kafka 主题)的流表,并为存储聚合和结果提供物化视图。物化视图会在流表接收到新数据时自动更新。

 

Databricks 在其文档中提供了SQL语法的概述。摘录如下。该示例基于纽约市 TLC 行程记录数据集。

 

-- 青铜层:原始数据摄取CREATE OR REFRESH STREAMING TABLE taxi_raw_records (CONSTRAINT valid_distance EXPECT (trip_distance > 0.0) ON VIOLATION DROP ROW)AS SELECT *FROM STREAM(samples.nyctaxi.trips);
-- 白银层1:标记的行程CREATE OR REFRESH STREAMING TABLE flagged_rides AS SELECT date_trunc("week", tpep_pickup_datetime) as week, pickup_zip as zip, fare_amount, trip_distanceFROM STREAM(LIVE.taxi_raw_records)WHERE ((pickup_zip = dropoff_zip AND fare_amount > 50) OR (trip_distance < 5 AND fare_amount > 50));
复制代码

 

该示例展示了如何使用 CREATE STREAMING TABLE 命令定义流来构建管道,然后在后续查询中使用 FROM 语句消费它们。这个示例值得注意的是,能够使用 CONSTRAIN … EXPECT … ON VIOLATION 语法在管道中包含数据质量检查。

 

虽然 Apache Spark 的更改尚未发布,但许多文章已经描述了使用 Databricks DLT 的工程师的经验。在 Medium 上发表的一篇名为“为什么我喜欢Databricks中的Delta Live Tables”的文章中,Mariusz Kujawski 描述了 DLT 的功能以及如何最好地使用它们:“有了 DLT,你只需要几个小时就可以构建一个摄取管道,相比之下,开发一个自定义框架需要几天的时间。此外,内置的数据质量保证提供了额外的可靠性层。”

 

除了用于定义管道的声明式语法外,Spark 声明式管道还支持变更数据捕获(CDC)、批处理和流逻辑、内置重试逻辑和可观测性钩子。

 

声明式管道正在被合并到 Spark 项目中。该特性计划在 2026 年 1 月发布的下一个 Spark 版本 4.10 中使用。可以在工单SPARK-51727中查看 Apache Jira Spark 项目中进度。

 

原文链接:

https://www.infoq.com/news/2025/07/databricks-declarative-pipelines/

2025-07-04 16:001

评论

发布
暂无评论

ironSource现已支持自定义广告网络

AI 算法在视频可分级编码中的应用

融云 RongCloud

人工智能 音视频 编解码

初识java-JDBC,mysql索引左前缀原理

Java 程序员 后端

利用多condition动态管理池化的异步资源背景

Java 后端

别看是Java基础,很多人已入坑,java技术栈

Java 程序员 后端

10月书讯 | 跟着泰拉去冒险

图灵教育

编程 程序员 书单

GaussDB (for Cassandra) 数据库治理:大key与热key问题的检测与解决

华为云开发者联盟

数据库 分布式数据库 key GaussDB (for Cassandra) 数据库治理

crm软件有哪些比较好?国内目前好用的crm系统推荐!

低代码小观

CRM 管理系统 企业管理系统 CRM系统 客户关系管理系统

可观测性架构实践

郑印

利用碎片化的时间逆袭进百度,我的面试经历你敢听吗?

Java 程序员 后端

【架构设计总结】

Ryoma

糟糕程序员的20个坏习惯

Kaito

架构 程序人生 后端 编程修养

JavaScript 解构赋值 5 个常见场景和实例

devpoint

JavaScript 大前端 ES6 11月日更

优先队列一些记录以及解题思路

数据结构 Go 语言 优先队列

揭秘 MatrixDB 数据库内核技术,可编程的数据库!

YMatrix 超融合数据库

数据库 时序数据库 分布式时序数据库 MatrixDB 超融合时序数据库

利用这份文档,我成功定位阿里P6,却拿着P7的工资

Java 程序员 后端

如何 30 分钟搭建一个语聊房

融云 RongCloud

工具:Juypter Notebook

正向成长

Jupyter Notebook

活动日程首公布|Apache ShardingSphere Dev Meetup 亮点新揭秘

SphereEx

ShardingJDBC ShardingSphere 技术沙龙 SphereEx

hadoop nameNode/datanode 稳定性&性能改进点

Clarke

判断对象是否已死分析总结——JVM系列,让人茅塞顿开

Java 程序员 后端

双11大促 | 消息推送资源包6折购!一键集成华为、小米等多厂商推送通道

蚂蚁集团移动开发平台 mPaaS

消息推送 push mPaaS 双11 促销

开源应用中心|Discuz!X全新PC社区体验,多种场景一站解决

Discuz! 开源社区 Discuz

到了2020年,技术水平到底需要达到怎样的程度才能成为顶级的阿里P8架构师

Java 程序员 后端

语聊房高质量音乐伴奏的实现

融云 RongCloud

语聊房 音乐播放

BoCloud博云完成 E 轮融资

BoCloud博云

云计算 云原生 博云

【Quarkus技术系列】「云原生架构体系」打造基于Quarkus的云原生微服务框架实践

码界西柚

云原生 Quarkus 原生云 11月日更

字节Android Native Crash治理之Memory Corruption工具原理与实践

字节跳动终端技术

字节跳动 Android; 火山引擎

彻底理解 AQS我是懂了,你呢?

何小事儿

Java 多线程 并发

DDD战术设计实践

郑印

DDD

FabEdge 和 SuperEdge 联合在边缘 K8s 集群支持原生 Service 云边互访和 PodIP 直通

BoCloud博云

云原生 边缘计算 superedge FabEdge

Databricks为Apache Spark提供了Spark声明式管道_大数据_InfoQ精选文章