进阶 dagster.io 2026-10-10 01:48:56 · 6 阅读

第3章 Dagster Components:加速数据管道开发的新利器

Dagster Components:简化数据管道开发与管理的新技术 我们很高兴宣布 Dagster Components 预览版正式上线。这是一种全新的管道开发与管理办法。它让数据团队能够快速创建、配置并扩展数据工作流,而不必被复杂的代码或繁琐的初始化任务拖慢脚步。

为什么构建 Components

在 Dagster,我们一直致力于提升数据工程师的开发体验。Components 简化了管道开发流程,让工作流的搭建与扩展变得前所未有地快速便捷。通过精简、标准化的项目结构和基于 YAML 的定义,无论新手还是资深用户,都能快速构建出复杂的管道系统。

什么是 Dagster Components

Dagster Components 提供了一套简化且结构化的方式来定义和管理 Dagster 项目,助力团队轻松从“Hello World”过渡到复杂且可扩展的管道系统。配合全新的 CLI 工具 dg,Dagster Components 将我们一流的开发者体验推向了新高度。

使用 Components,你将获得:

  • 一套注重清晰度和可扩展性的推荐项目结构。
  • 可复用、可配置的构建模块,大幅减少样板代码,加快管道创建速度。
  • 基于类的简化 Python 接口和基于 YAML 的 DSL,降低了对深层 Python 专业知识的要求。

借助这些强大的抽象层,你可以更专注于数据本身,而非底层的编排机制。

为何选择 Dagster Components

加速上手与提升效率

减少初始化时间与复杂度。借助 Dagster Components,团队可以建立内部组件库,同时确保设置合适的护栏。无论是将 Dagster 作为新的数据平台,还是让利益相关者加入现有的 Dagster 实施,团队都能更快上手并立即看到价值。

统一的 CLI 体验

dg 将项目初始化、脚手架生成和管理整合到一个连贯的工具中,从开源版(OSS)到 Dagster Plus 提供一致的使用体验。

低代码便捷,高代码强大

YAML 定义简化了大多数场景,而基于 Python 的定制化则确保在需要复杂逻辑时的灵活性。

AI 就绪

LLM 在受到约束和具备结构的情况下表现最佳。Dagster Components 从底层构建时就旨在配合你常用的 AI 工具,从 Copilot 到 Cursor,从 Claude Code 到 Cline。我们将发布一个 MCP 服务器,让你喜爱的工具能无缝集成到 Dagster。

开始使用 Dagster Components

Dagster Components 引入了新的统一 CLI 工具 dg,以简化项目的创建与管理。了解 dg 和 components 的最佳起点是我们的文档。

安装 dg 并创建项目后,你可以使用 dg 快速通过 components 搭建资产(assets)骨架。之后,你可以通过 YAML 自定义这些组件,这使得更多种类的用户和用例都能更轻松地采用 Dagster。

举个例子,如果你是一位鸟类观察爱好者,可能为每年的鸟类调查创建了一个资产,但这会导致代码重复:

```python @dg.asset(kinds=["python"], group_name="raw_data") def checklist_2020(context: dg.AssetExecutionContext): extracted_names, elapsed_times = download_and_extract_data( context, constants.CHECKLIST_2020 ) return dg.MaterializeResult( metadata={ "names": extracted_names, "num_files": len(extracted_names), "elapsed_time": elapsed_times, }, ) @dg.asset(kinds=["python"], group_name="raw_data") def checklist_2023(context: dg.AssetExecutionContext): extracted_names, elapsed_times = download_and_extract_data( context, constants.CHECKLIST_2023 ) return dg.MaterializeResult( metadata={ "names": extracted_names, "num_files": len(extracted_names), "elapsed_time": elapsed_times, }, ) ```

现在,你可以抽象出构建此类资产的逻辑,为每个 checklist 创建一个 YAML 文件:

```yaml type: birds_dot_csv.lib.BirdChecklist attributes: name: checklist_2023 url: "https://path.to/data/June2023_Public.zip" ```

这种抽象可以扩展到其他集成。例如,设置 dbt 项目现在只需几行代码。在这个例子中,我们设置了 dbt 项目的路径,并定义了如何将 dbt 模型映射为资产键。

```yaml type: dagster_dbt.DbtProjectComponent attributes: project: "{{project_root}}//dbt/birddbt" translation: key: "{{node.name}}" ```

使用 components,你只需修改 YAML 配置即可创建复杂的管道,而无需编写大量 Python 代码,同时仍可利用 Python 的全部功能。

护栏中的自由

我们相信,低门槛并不意味着低天花板。虽然我们提供了 YAML 框架的便捷性,但 Dagster Components 也支持通过 Python 进行强大的自定义,以便在需要更深层次控制时提供灵活性。这让你在享受低代码便捷的同时,拥有 Python 定制的强大能力。

你可以为团队创建丰富、强大的抽象层,或者依赖由 Dagster 及其合作伙伴构建的组件市场,获得一如既往的高质量集成体验,但实现方式更加简化。内置的文档功能让你可以轻松记录、浏览和理解组件及其属性,使开发更加简单。

提供护栏以帮助你编写更易维护的管道,这一副作用同样带来了 AI 代码生成体验的提升。能够为 LLM 提供上下文和约束条件,终于解锁了 AI 辅助管道构建功能,且不再感觉拖泥带水。虽然我们发现在完全自由的框架下大多数 LLM 难以构建足够复杂的管道,但在通过组件系统施加约束后,LLM 的表现非常亮眼。

随着即将发布的 Model Context Protocol (MCP) Server,Dagster 与最新 AI 代码编辑器的集成能力将进一步提升。

下一步是什么

Dagster Components 目前处于预览阶段,你的反馈将塑造它的未来!请尝试使用,并告诉我们你的体验。查看以下详细指南以开始使用:

  • Components ETL 管道教程
  • dg 入门指南
  • Dagster Components 深度解析 [Youtube]
  • 使用 Dagster Components 简化 PDF 文本提取 | 分步教程

有反馈或疑问?请在 Slack 或 Github 中发起讨论。
有兴趣加入我们?查看我们的开放职位。
想看更多类似内容?关注我们的 LinkedIn。

评论 (0)