开源项目教程:天文家宇宙(Astronomer Cosmos)
项目介绍
天文家宇宙(Astronomer Cosmos) 是一个强大的工具,它允许数据工程师和分析师将他们的 dbt Core 项目轻松集成到 Apache Airflow 工作流中。通过几行代码,你可以将 dbt 项目转换成 Airflow 的 DAGs 和任务组,从而利用 Airflow 的强大调度功能和丰富的生态系统。这不仅促进了更高效的数据库变换流程,还简化了依赖管理,支持在虚拟环境中运行 dbt 避免冲突,并允许直接对接 Airflow 数据库连接,增强数据处理的灵活性与自动化。
项目快速启动
要快速开始使用天文家宇宙,首先确保你的环境已经安装了必要的依赖项,包括 Python、Apache Airflow 及其相关库,以及 dbt Core。下面是基本的设置步骤:
步骤一:安装 Astronomer Cosmos
在你的项目目录中,使用 pip 安装 astronomer-cosmos
包:
pip install astronomer-cosmos
步骤二:配置基本 DAG
接下来,创建一个 Python 文件作为你的 DAG 脚本,例如 basic_cosmos_dag.py
:
from datetime import datetime
from pathlib import Path
from cosmos import DbtDag, ProjectConfig, ProfileConfig
from cosmos.profiles import PostgresUserPasswordProfileMapping
# 默认 dbt 根路径配置
DEFAULT_DBT_ROOT_PATH = Path(__file__).parent / "dbt"
DBT_ROOT_PATH = Path(os.getenv("DBT_ROOT_PATH", DEFAULT_DBT_ROOT_PATH))
# 配置 dbt 项目和 Airflow 连接
profile_config = ProfileConfig(
profile_name="default",
target_name="dev",
profile_mapping=PostgresUserPasswordProfileMapping(conn_id="airflow_db", profile_args=["schema": "public"])
)
# 创建 DAG
basic_cosmos_dag = DbtDag(
project_config=ProjectConfig(DBT_ROOT_PATH / "jaffle_shop"),
profile_config=profile_config,
operator_args=[
"install_deps": True, # 在执行任何 dbt 命令前安装必需的依赖
"full_refresh": True # 进行全刷新,仅限支持此标志的 dbt 命令
],
schedule_interval="@daily", # 每日执行
start_date=datetime(2023, 1, 1), # 起始日期
catchup=False, # 不进行补间执行
dag_id="basic_cosmos_dag", # DAG ID
default_args={
"retries": 2 # 失败重试次数
}
)
最后,在你的 Airflow 环境中配置好相关的 Airflow 连接 (airflow_db
) 并激活该 DAG。
应用案例和最佳实践
天文家宇宙尤其适合那些已经在使用 Apache Airflow 管理数据管道的团队,希望将 dbt 的模型构建能力无缝整合进现有的工作流程中。最佳实践中,应考虑以下几点:
- 利用 Airflow 的定时器(
schedule_interval
)结合 dbt 的模式感知能力,实现数据即时响应。 - 设计灵活的任务组以复用 dbt 模型,减少代码重复。
- 使用 Airflow 的丰富插件和传感器来监控数据源变化,触发 dbt 构建。
- 对于复杂的 dbt 项目,采用环境变量管理不同的 dbt 环境配置,保持项目可扩展性。
典型生态项目
天文家宇宙本身就是围绕 Apache Airflow 和 dbt 构建的数据工程生态的一部分。在其之上,可以结合其他开源工具如 Airflow Plugins
, dbt Cloud
或 Great Expectations
来提升数据质量检查、版本控制和可视化界面的能力。此外,天文家(Astronomer)公司还提供了多种服务和工具来进一步支持云端的数据作业自动化,形成完整的数据栈解决方案。
通过以上简明教程,你现在应该能够快速上手并开始在你的数据管道中利用天文家宇宙的力量了。记得参考官方文档和社区资源以获取更多高级特性和实战技巧。