开源项目:Astronomer Cosmos 指南
项目概述
Astronomer Cosmos 是一个强大的工具,它允许数据工程师将他们的 dbt Core
项目轻松地转化为 Apache Airflow 中的任务和任务组,从而实现更高效的管道编排和执行。通过几行代码就能整合 dbt 作业至 Airflow 的工作流中,增强对数据处理流程的控制。
1. 项目目录结构及介绍
Astronomer Cosmos 的项目结构清晰地组织了其核心功能和资源配置。以下是一个典型的项目目录结构示例:
astronomer-cosmos/
├── cosmos/
│ ├── __init__.py # 包初始化文件
│ └── ... # 包含 Cosmos 主要逻辑的Python模块
├── dev/
│ └── dags/ # 存放示例 DAG 文件,如基本的 Cosmos DAG 示例
│ └── basic_cosmos_dag.py
├── docs/ # 文档目录,包含项目说明和指南
├── scripts/ # 可能包括测试脚本或自动化脚本
├── tests/ # 测试案例存放区
├── .coveragerc # 代码覆盖率配置文件
├── .gitignore # Git忽略文件列表
├── pre-commit-config.yaml # Pre-commit 配置文件,用于代码质量检查
├── tiltignore # Tilt 使用时忽略的文件
├── CHANGELOG.rst # 更新日志文件
├── CODEOWNERS # 指定代码审查者文件
├── CODE_OF_CONDUCT.md # 贡献者行为准则
├── LICENSE # 许可证文件
├── README.rst # 项目快速入门和概览
└── pyproject.toml # 项目配置文件,定义依赖等
目录结构解读
- cosmos: 包含 Cosmos 库的核心代码。
- dev/dags: 提供示例 DAG 文件,展示如何集成 dbt 项目。
- docs: 文档资料,帮助开发者理解和使用项目。
- scripts, tests: 分别用于开发过程中的脚本编写和测试。
- 配置文件 (.gitignore, .coveragerc, pre-commit-config.yaml, tiltignore, etc.) 专注于开发环境的管理和代码质量保证。
- 管理文件 (CHANGELOG.rst, CODEOWNERS, CODE_OF_CONDUCT.md, LICENSE, README.rst, pyproject.toml) 提供项目维护、贡献规则、法律信息和快速入门指导。
2. 项目的启动文件介绍
在 dev/dags/
目录下的 basic_cosmos_dag.py
是一个关键的启动示例,展示了如何创建一个基于 dbt 项目的 Airflow DAG。此文件引导用户配置 dbt 项目的路径、Airflow 连接和其他运行参数,并通过 DbtDag
类实例化 DAG 对象。例如:
from cosmos import DbtDag, ProjectConfig, ProfileConfig
from cosmos.profiles import PostgresUserPasswordProfileMapping
# 配置项
DBT_ROOT_PATH = Path(os.getenv("DBT_ROOT_PATH", DEFAULT_DBT_ROOT_PATH))
profile_config = ProfileConfig(
profile_name="default",
target_name="dev",
profile_mapping=PostgresUserPasswordProfileMapping(conn_id="airflow_db"),
)
# 定义 DAG
basic_cosmos_dag = DbtDag(
project_config=ProjectConfig(DBT_ROOT_PATH / "jaffle_shop"),
profile_config=profile_config,
# 更多dag和操作参数...
)
3. 项目的配置文件介绍
Cosmos 的核心配置主要涉及到两个方面:DAG的配置与dbt项目的具体设置。
DAG配置
DAG配置主要是在创建DbtDag
实例时指定的各项参数,比如:
schedule_interval
: DAG的调度间隔。start_date
: DAG首次执行的时间点。catchup
: 是否进行历史补跑。default_args
: 包含重试次数等默认执行参数。
dbt项目配置
dbt_project_path
: 通过ProjectConfig
指定dbt项目的根路径。profile_config
: 通过ProfileConfig
结合特定的Airflow连接ID来配置dbt运行环境,支持不同目标和配置映射。
此外,项目外部可能需要配置环境变量(如DBT_ROOT_PATH
),以及确保Airflow环境已正确设置了必要的连接(conn_id
)。
通过上述配置,开发者能够灵活地控制dbt任务在Airflow中的行为和交互方式,简化大数据工作流程的管理。