Dagster:用Python定义数据资产,框架负责调度
Dagster:用Python定义数据资产,框架负责调度
Dagster 在 GitHub 上拿到了 15.5K Star。
它做数据管道编排,但和 Airflow 走的路子不同。Dagster 以"数据资产"为核心来建模,Airflow 以"任务"为核心。两种范式会导向不同的工程取舍。
1、 什么是"数据资产"
在 Dagster 里,一张表、一个数据集、一个训练好的模型、一份报表,都叫作数据资产。
用 @dg.asset 装饰器声明一个 Python 函数,函数的返回值就是资产。Dagster 自动记录产物元数据,追踪数据血缘。上游资产刷新后,下游自动重跑。每项资产的输入是另一项资产的输出,数据流图就靠这些依赖关系拼合起来。
import dagster as dg
import pandas as pd
@dg.asset
def country_populations() -> pd.DataFrame:
df = pd.read_html("https://tinyurl.com/mry64ebh")[0]
df.columns = ["country", "pop2022", "pop2023", "change", "continent", "region"]
return df
@dg.asset
def continent_change_model(country_populations: pd.DataFrame):
from sklearn.linear_model import LinearRegression
data = country_populations.dropna(subset=["change"])
return LinearRegression().fit(
pd.get_dummies(data[["continent"]]), data["change"]
)
@dg.asset
def continent_stats(country_populations, continent_change_model) -> pd.DataFrame:
result = country_populations.groupby("continent").sum()
result["pop_change_factor"] = continent_change_model.coef_
return result
三项资产串成一条处理链:取人口数据、训练回归模型、输出大洲统计。Dagster 自动解析函数签名中的类型标注,确定执行顺序,不需要手动画 DAG 图。

2、 和 Airflow 的核心差异
Airflow 是任务驱动。你定义"第一步跑 A、第二步跑 B、第三步跑 C",调度器按 DAG 图逐节点执行。
Dagster 是资产驱动。你定义"要产出 X、Y、Z 三项资产,X 依赖 W,Y 依赖 X",调度图由框架根据依赖关系推导。
任务驱动模式有一个常见痛点:上游任务跑完了,下游没人知道。上游数据发生变更,下游完全收不到通知。资产驱动把这些反馈闭环内建在框架中,数据变化自动触发下游资产的重计算。
另一个差异在开发体验。Airflow 的 DAG 定义通常依赖调度器上下文,本地开发需要配连接、配 Executor。Dagster 的资产函数是纯 Python 函数,本地执行 dagster dev 启动 Web UI,浏览器里直接看资产图、单步调试、查看运行输出。测试也很简单:资产函数本身就是普通 Python 函数,传入 mock 数据断言返回值即可。
Dagster 覆盖了数据开发的完整环节:本地开发、单元测试、集成测试、预发布环境、生产环境。同一套代码和定义贯穿始终。
3、 三类角色定位
Dagster 的 README 把自身定位为三种角色:
生产率平台:声明式定义数据资产,把 CI/CD 理念引入数据工程。组件可复用,数据质量问题尽早暴露。
编排引擎:多租户架构,生产级调度和容错,支持水平扩展。
统一控制面:元数据集中管理,内建可观测性、血缘追踪、诊断工具和资产目录。数据规模越大,统一控制面的价值越明显。

4、 集成生态
Dagster 维护了一个集成库,覆盖主流数据工具:dbt、Spark、Snowflake、Databricks、Fivetran、Airbyte、Great Expectations、Tableau 等。已有数据栈不需要推翻重来,Dagster 负责把这些工具纳入统一调度和监控。
5、 适合哪些团队
- 数据工程团队:管理几十上百张表的 ETL 流水线,需要血缘追踪和集中调度
- ML 工程团队:训练流水线涉及多步数据处理和模型产出,依赖关系密集
- 数据平台团队:向多个业务线提供统一的数据管道管理,降低运维负担
Python 3.9 到 3.14 支持,Apache 2.0 开源,PyPI 直接安装。
团队:向多个业务线提供统一的数据管道管理,降低运维负担
Python 3.9 到 3.14 支持,Apache 2.0 开源,PyPI 直接安装。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)