dagster-构建数据管道和工作流-开源项目


这个仓库 dagster 是一个用于构建数据管道和工作流的开源项目,从代码结构和内容来看,它具备以下特点和功能:

主要功能模块

  1. 存储配置:支持多种数据库作为存储后端,包括 MySQL 和 PostgreSQL。用户可以通过修改 dagster.yaml 文件来配置使用哪种存储后端。
    • MySQL 存储:定义了 DagsterMySQLStorage 类,使用 MySqlStorageConfig 进行配置。相关代码位于 dagster/python_modules/libraries/dagster-mysql/dagster_mysql/storage.py
    • PostgreSQL 存储:定义了 DagsterPostgresStorage 类,使用 PostgresStorageConfig 进行配置。相关代码位于 dagster/python_modules/libraries/dagster-postgres/dagster_postgres/storage.py
    • 复合存储CompositeStorage 类可将分别配置的运行、事件日志和调度存储组合成单个 Dagster 存储。代码位于 dagster/python_modules/dagster/dagster/_core/storage/legacy_storage.py
  2. 资源定义:支持定义和使用资源,例如 FileStoreBucket 资源类,可用于与文件存储服务进行交互。代码位于 dagster/examples/docs_snippets/docs_snippets/concepts/resources/pythonic_resources.py
  3. 数据仓库:定义了多个仓库函数,如 partitioned_assets_repositorybig_honkin_assets_repository,用于组织和管理资产和作业。相关代码位于 dagster/python_modules/dagster-test/dagster_test/toys/repo.py
  4. UI 测试:包含多个 UI 测试文件,如 sortRepoBuckets.test.tsxLeftNavRepositorySection.test.tsx,用于测试前端界面的功能和交互。这些文件位于 dagster/js_modules/dagster-ui/packages/ui-core/src 目录下。
  5. Delta Lake 存储配置:提供了多种对象存储的配置类,包括 Azure、GCS、S3 和本地存储。这些类可用于配置 Delta Lake 的存储选项。代码位于 dagster/python_modules/libraries/dagster-deltalake/dagster_deltalake/config.py

代码结构

  • python_modules:包含 Python 代码,主要实现了 Dagster 的核心功能和各种扩展库。
  • js_modules:包含 JavaScript 代码,主要用于实现前端界面和相关测试。
  • examples:包含一些示例代码,展示了如何使用 Dagster 的各种功能。
  • docs:包含项目的文档和说明。
  • integration_tests:包含集成测试代码,用于测试不同组件之间的交互。

部署配置

可以通过 dagster.yaml 文件配置存储后端和计算日志存储,例如使用 PostgreSQL 作为存储后端,使用 S3 存储计算日志。示例配置如下:

storage:
  postgres:
    postgres_db:
      username:
        env: DAGSTER_PG_USERNAME
      password:
        env: DAGSTER_PG_PASSWORD
      hostname:
        env: DAGSTER_PG_HOST
      db_name:
        env: DAGSTER_PG_DB
      port: 5432

compute_logs:
  module: dagster_aws.s3.compute_log_manager
  class: S3ComputeLogManager
  config:
    bucket: "mycorp-dagster-compute-logs"
    prefix: "dagster-test-"

local_artifact_storage:
  module: dagster.core.storage.root
  class: LocalArtifactStorage
  config:
    base_dir: "/opt/dagster/local/"

总结

这个仓库提供了一个完整的数据管道和工作流管理解决方案,支持多种存储后端和资源类型,同时提供了前端界面和测试工具,方便用户进行开发和部署。

Github

官网