Airflow 3 有资产了,还换 Dagster 吗?

名词越来越像,差别还剩什么?
摘要
Airflow 3 引入了 Asset,Dagster 的核心卖点不再独占。差别还在:Dagster 从“产出什么数据”出发,Airflow 从“跑哪些任务”出发。新项目、dbt 为主选 Dagster,存量多、生态广选 Airflow。
先说明:两篇“官方对比”都不中立
Dagster 官网有一篇对比页,口号是“该离开 Airflow 了”。它的页脚写着 Prefect 的版权:Prefect 在 2026 年 7 月宣布收购 Dagster Labs。页面里“开发效率是 Airflow 的 2 倍”没有给来源和方法。
Airflow 这边也一样。托管商 Astronomer 写了反向的对比页,称 Airflow 有 1700 多个 provider 包,Dagster 约 67 个集成,还说 Dagster 的资产图在几百个资产时会变慢,同样没给来源。
所以下面的数字我都标了出处:厂商自述的,写明是自述;能查的,我直接查了。
老区别:任务 vs 资产
Airflow 的单位是任务:A 跑完跑 B,B 跑完跑 C。图上的节点是“一件要做的事”。
Dagster 的单位是数据资产:你声明“我要产出这张表”,依赖写在函数参数里。
import dagster as dg
@dg.asset
def raw_orders() -> list[dict]:
return [{"id": 1, "amount": 30}, {"id": 2, "amount": 70}]
@dg.asset
def daily_revenue(raw_orders: list[dict]) -> int:
return sum(o["amount"] for o in raw_orders)
daily_revenue 的参数名就是它依赖的资产,血缘图是顺手得到的。
新变化:Airflow 3 也有 Asset 了
Airflow 3.0 在 2025 年 4 月 22 日发布,把原来的 Dataset 演进成了 Asset。官方文档里的写法是这样:
from airflow.sdk import DAG, Asset
from airflow.providers.standard.operators.bash import BashOperator # 官方片段未写这行
example_asset = Asset("s3://asset/example.csv")
with DAG(dag_id="producer", ...):
BashOperator(task_id="producer", outlets=[example_asset], ...)
with DAG(dag_id="consumer", schedule=[example_asset], ...):
...
任务用 outlets 声明自己更新了哪个资产,下游 DAG 用 schedule=[example_asset] 在资产更新后被触发。依赖多个资产时,Airflow 会攒着事件,等它们都更新。文档还提到用 AssetWatcher 做事件驱动的调度。
同一版本还带来了 DAG 版本化(一次运行会在开始时的版本上跑完,哪怕中途上传了新版本),以及由调度器托管的 backfill。
这些变化把“Airflow 只会管任务”这个说法改成了“Airflow 也能按资产触发”。
那差别还剩什么
按我读到的材料,剩下三处:
1. 资产是不是一等公民。 在 Airflow 里,资产是挂在任务上的标记(outlets),任务仍是主角。在 Dagster 里,资产本身就是被定义和运行的对象,运行记录、失败历史、新鲜度、质量检查都按资产归档。Astronomer 的对比页也承认,资产模型长期是 Dagster 的主要差异点,只是说 Airflow 3 缩小了差距。
2. 本地开发的手感。 Dagster 一条 dagster dev 起本地界面。Airflow 也有一条命令 airflow standalone,能把全部组件拉起来,官方说生产环境要分开部署。几个细节要知道:Windows 要用 WSL2,不支持 Poetry 和 pip-tools,3.x 的管理员密码写在 $AIRFLOW_HOME 下的一个生成文件里,官方提示终端输出里不一定显示。Dagster 官网引用用户的话,说 Airflow 本地要 docker 和复杂的基础设施,这是用户的主观感受,不是测过的数据。
3. 生态和规模。 这一点是 Airflow 的:我在 2026 年 10 月 24 日查 GitHub,Airflow 约 4.7 万 star,Dagster 约 1.6 万;两个都是 Apache-2.0。社区、插件、招聘池,Airflow 都大得多。Astronomer 说 OpenAI 用 Airflow 跑约 7000 条管道,这是它的自述。
已有 Airflow 怎么办
Dagster 的迁移方案叫 Airlift,思路是不动 Airflow 代码:先在 Dagster 里观测所有 Airflow 实例的 DAG,再逐步把新管道建在 Dagster 上,最后关掉旧的。官方称整个过程是增量的、低风险的。
这话是厂商说的,别当保证。有两个现实问题官方页面没回答:
- 你要同时养两套系统一段时间。
- Dagster+ 按积分计费:Solo 每月 10 美元,Starter 每月 100 美元,每次资产物化和每个 op 执行算 1 个积分,页面没有列出任何包含的额度。开源版自托管没有这笔钱。
另外,2026 年 7 月 Prefect 宣布收购 Dagster Labs。Dagster 官方说不并入 Prefect、不要求客户迁移,开源承诺不变。选型时值得留意后续动作。
怎么选
| 你的情况 | 倾向 |
|---|---|
| 新建分析平台,dbt 为主,单个团队 | Dagster |
| 已有大量 Airflow DAG,运行稳定 | 继续 Airflow,先升级到 3 |
| 需要大量现成的 provider 集成 | Airflow |
| 团队说不清“哪张表依赖哪张” | Dagster,或在 Airflow 3 里认真用 Asset |
| 想先小成本试 | 两个都能本地一条命令跑起来,各试半天 |
我的看法:Airflow 3 把“能不能按资产触发”这件事补上了,所以不要为了这一条换系统。真正值得换的理由是你想让资产成为主角,血缘、新鲜度、质量检查放在同一个模型里。如果这不是你的痛点,升级 Airflow 的收益更大、风险更小。
你会怎么选
如果今天让你拍板,你选 Dagster,还是留在 Airflow 3?是存量 DAG 让你留下,还是“资产是一等公民”让你想换?
Dagster 项目地址:github.com/dagster-io/dagster,Airflow 项目地址:github.com/apache/airflow。