
副标题 :从 DAG 时代 · 到 Asset-centric 时代 · 跟 Airflow 306 形成新旧编排对比
赛道 :编排 · 补足 Airflow 306 之外的 ” 新一代编排 ” 层
作者 :yunying(增长运营官)
时间:2026-08-20
一、引子:Airflow 老了
8/13 调研的《Airflow 调研》?p=306》讲的是 DAG 编排——把任务画成 DAG 图(任务 A → 任务 B → 任务 C)。
但 2026 年新派编排哲学是 Asset-centric(以数据资产为中心):
–
DAG 思维——” 我有哪些任务?怎么连?”
–
Asset 思维——” 我有哪些数据资产?它们怎么演化?”
Dagster = Asset 思维的代表——16K stars · Apache-2.0 · 2026-08-19 今天还在 push。
二、它解决什么问题(30 秒版)
Airflow 时代 3 个老问题:
1.
任务失败难排查——DAG 跑挂了你只看到 ” 任务 X 失败 ”,不知道哪个数据资产坏了
2.
数据血缘弱——任务 A 改了表 a,但下游 10 个任务都消费 a,等数据出问题才追责
3.
本地测试难——Airflow 任务依赖 airflow.cfg / DB / scheduler,本地跑不动
Dagster = 用 Asset 重新思考编排 ——每个数据资产(表 / 文件 / 模型)是一等公民, 追踪资产演化 自动生成 lineage。
实时数据(2026-08-20 拉取)
| 维度 | 数值 |
|---|---|
| 仓库 | dagster-io/dagster |
| Stars | 16,026 |
| Forks | 2,248 |
| Open Issues | 2,596(量大,但商业项目常态) |
| License | Apache-2.0 ✅ |
| 最后 push | 2026-08-19 01:18 UTC(今天!) |
| 创建时间 | 2018-04-30(8 年) |
| Topics | analytics / dagster / data-engineering / data-integration / data-orchestrator / data-pipelines / data-science / etl / metadata / mlops / orchestration / python / scheduler / workflow / workflow-automation(15 个) |
| 官网 | dagster.io |
| 开源模式 | Apache-2.0 核心 + Dagster+ Cloud 商业 |
关键判断 :Dagster 是 2026 编排赛道的事实标准——Apache-2.0 + 8 年沉淀 + 商业化成熟。Dagster Labs 估值 $50M+,Series B 2022, 已经被 Snowflake 2026 收购(业内传闻待证实)。
三、4 大核心特性
1. Asset-Centric(数据资产为中心)
import dagster as dg
@dg.asset
def customers(...) -> pd.DataFrame:
# 这个函数产生 "customers" 数据资产
return df
@dg.asset(deps=[customers]) # ← 显式依赖 customers 数据资产
def orders(...) -> pd.DataFrame:
# 通过 customers 计算 orders
return df.merge(customers)
核心创新:@dg.asset 装饰器 把数据资产当作一等公民——Dagster 自动追踪 ” 哪个任务产哪个资产 ”、” 哪个资产被谁消费 ”。
2. Built-in Lineage(自动血缘)
Dagster UI 自动展示:
–
资产图谱 —— customers → orders → analytics_dashboard
–
每次跑的状态 —— 哪个资产最新版本、谁的版本是最新的
–
数据质量 —— 每次跑记录 partition / row count / schema
3. Local-First Development(本地优先)
# 本地无需 airflow.cfg / DB / scheduler
dagster dev -f my_pipeline.py
# 自动开 localhost:3000 看 UI
# 改动代码立刻热重载
实战价值:Airflow 必须部署 + 配置 DB,Dagster dagster dev 一行启动。
4. Software-Defined Assets(软件定义资产)
# 每个资产都有 metadata
@dg.asset(
metadata={
"owner": "data-team",
"sla": "24h",
"tier": "critical",
},
partitions_def=dg.daily_partitions_definition(start_date="2026-01-01"),
)
def daily_gmv(context: dg.AssetExecutionContext):
# 自动分区管理
date = context.partition_key # "2026-08-19"
return compute_gmv(date)
核心能力:
–
元数据绑定——资产的 owner / SLA / 业务重要性
–
分区管理——按天 / 小时 / 自定义维度自动分片
–
增量重跑——只重跑某个分区的资产
四、对比 Airflow 306 / Prefect / Kestra
| 维度 | Dagster (本篇) | Airflow (306) | Prefect | Kestra |
|---|---|---|---|---|
| Stars | 16,026 | ~36K | 17K | 11K |
| License | Apache-2.0 ✅ | Apache-2.0 ✅ | Apache-2.0 ✅ | Apache-2.0 ✅ |
| 编排范式 | Asset-centric ⭐ | DAG (Task-centric) | Task + Flow | YAML DAG |
| 数据资产意识 | ✅ 一等公民 | ❌ | ❌ | ❌ |
| 血缘展示 | ✅ 内置资产图 | ❌ 需配 OpenLineage | ⚠️ 弱 | ⚠️ 弱 |
| 本地开发 | ✅ dagster dev |
⚠️ 需 airflow.cfg + DB | ✅ | ✅ |
| 类型系统 | ✅ Python type hints | ❌ | ⚠️ | ❌ |
| 学习曲线 | 中(Asset 思维转换) | 中(DAG 思维) | 低 | 低 |
| 成熟度 | 2026 主推 | 老牌(2014) | 较新 | 较新 |
| 被谁用 | Snowflake / 头部 SaaS | Apache 老牌 | ML/AI 团队 | 数据团队 |
选谁?
| 场景 | 推荐 |
|---|---|
| 现代数据栈(SaaS / 现代化团队) | Dagster ⭐ |
| Airflow 已有项目 / 老项目 | Airflow(不迁移) |
| ML / AI 团队 + 简洁 | Prefect |
| K8s 原生 + YAML | Kestra |
| Apache 生态 + 大规模 | Airflow |
| 资产思维 + 现代工程 | Dagster ⭐ |
五、实战 3 步 · 35 分钟跑通 ”Dagster + Postgres + dbt”
Step 1 · 安装 + 启动(5 分钟)
pip install dagster dagster-webserver
# my_pipeline.py
import dagster as dg
import pandas as pd
@dg.asset
def raw_customers() -> pd.DataFrame:
return pd.read_csv("customers.csv")
@dg.asset
def cleaned_customers(raw_customers: pd.DataFrame) -> pd.DataFrame:
return raw_customers.dropna()
@dg.asset
def gmv(cleaned_customers: pd.DataFrame) -> float:
return float(cleaned_customers["amount"].sum())
defs = dg.Definitions(assets=[raw_customers, cleaned_customers, gmv])
# 启动本地 UI
dagster dev -f my_pipeline.py
# 打开 http://localhost:3000
Step 2 · 加 schedule + sensor(10 分钟)
# 按小时跑
hourly_schedule = dg.ScheduleDefinition(
name="hourly_gmv",
job=gmv,
cron_schedule="0 * * * *", # 每小时
)
# 监听上游新数据
@dg.asset_sensor(asset_key=dg.AssetKey("raw_customers"),
job=gmv,
minimum_interval_seconds=60)
def gmv_sensor():
return dg.RunRequest()
defs = dg.Definitions(assets=[raw_customers, cleaned_customers, gmv],
schedules=[hourly_schedule],
sensors=[gmv_sensor],
)
Step 3 · 用 dbt 集成(20 分钟)
# 集成 dbt 模型
from dagster_dbt import dbt_assets, DbtCliResource
@dbt_assets(manifest=dbt_project_manifest_path)
def my_dbt_assets(context: dg.AssetExecutionContext, dbt: DbtCliResource):
yield from dbt.cli(["build"], context=context).stream()
# Dagster 自动识别 dbt 模型作为 Asset
# 血缘 = dbt models + Python assets 一起展示
35 分钟跑通的成果:Python @asset + dbt model 一起编排,Dagster UI 一张图看完整数据资产演化。
六、风险与坑
| # | 风险 | 应对 |
|---|---|---|
| 1 | 学习曲线(从 DAG 思维转 Asset 思维) | 团队 1-2 周;先小项目跑通再上生产 |
| 2 | 2,596 open issues 量多 | 商业用户走 Dagster+,社区用户认准 v1.x 稳定版 |
| 3 | Airflow 迁移成本 | Dagster 提供 dagster-airflow 兼容层,但 最好不要硬迁——新项目用 Dagster |
| 4 | 生态比 Airflow 弱 | 部分 Operator 不全,需自己包装 |
| 5 | Dagster Labs 商业压力 | 核心 Apache-2.0 不会变,但企业版功能在 Cloud |
| 6 | Python-only | 跟 Airflow 一样,但比 Scala/Spark 友好 |
七、总结
3 个最值得用的理由
- Asset-centric 编排新范式——数据资产一等公民,自动血缘
- Apache-2.0 + 8 年沉淀——商业化成熟,2026 主流
- 本地优先 + 内置 UI——
dagster dev一行启动,Airflow 做不到
1 句选型口诀
新项目 + 现代数据栈 → Dagster;老项目 + Apache 生态 → Airflow;ML 团队 → Prefect;K8s 原生 → Kestra。
飞熊编排赛道对比(338 全景图补足)
| 项目 | 范式 | 状态 |
|---|---|---|
| Airflow (306) | DAG Task-centric | 老牌,Apache 生态 |
| Dagster (本篇) | Asset-centric | 2026 主流,现代数据栈 |
| Prefect | Task + Flow | ML / AI 团队 |
| Kestra | YAML DAG | K8s 原生 |
参考
- Dagster 官网:dagster.io
- Dagster Docs:docs.dagster.io
- GitHub 仓库:dagster-io/dagster
- Airflow 调研(306):《Airflow 调研》
- Apache Flink 调研(382):《Apache Flink 调研》
- PandasAI 调研(388):《PandasAI 调研》
- BI 栈全景图 v2 (338):《2026 BI 栈全景图 v2》
📎 WordPress 链接
- 官方链接:《飞熊出品 · Dagster 调研:16K stars Apache 2.0 编排新范式,asset-centric 取代 Airflow DAG》
- 短链:
https://east196.cn/?p={WP_POST_ID} - 状态:published · 2026-08-20