Astronomer Cosmos v1.10.0a1预览版:全面拥抱Airflow 3时代
项目简介
Astronomer Cosmos是一个基于Apache Airflow的开源项目,专注于为数据工程团队提供现代化的数据编排解决方案。该项目特别强调与dbt(data build tool)的深度集成,帮助用户在Airflow环境中高效运行和管理dbt项目。通过Cosmos,数据团队可以将dbt的强大转换能力与Airflow的工作流调度完美结合。
核心更新解析
Airflow 3全面兼容
本次v1.10.0a1预览版最重要的特性是对即将发布的Airflow 3的全面支持。开发团队从多个维度进行了适配工作:
-
任务实例字段渲染重构:针对Airflow 2.x和3.x的不同API,重新设计了Rendered Task Instance Fields(RTIF)的处理逻辑,确保在不同版本间的兼容性。
-
异步执行模式增强:特别优化了BigQuery的延迟执行(ExecutionMode.AIRFLOW_ASYNC)在Airflow 3中的表现,充分利用新版本的异步特性提升任务执行效率。
-
DAG渲染机制升级:改进了DbtDag在Airflow 3环境下的渲染过程,使得复杂的数据转换工作流能够更稳定地在新版本中运行。
dbt依赖管理优化
针对大型dbt项目中依赖管理耗时的问题,本次更新引入了创新的增量依赖管理方案:
-
预定义包支持:新增了
copy_dbt_packages功能,允许用户将常用的dbt包预置在项目中,避免每次运行都重新下载。 -
智能依赖解析:在执行
dbt deps命令时,系统会智能判断哪些依赖已经存在,只下载新增或变更的依赖项,显著减少了项目初始化时间。
测试行为改进
修复了测试间接选择(test_indirect_selection)标志在TestBehavior.BUILD模式下无法正确传递的问题,确保了测试覆盖率的准确性,特别是在构建模式下运行选择性测试时。
技术深度解析
Kubernetes执行模式示例
为展示Cosmos在现代基础设施中的能力,新增了Kubernetes执行模式的示例。这一特性特别适合需要弹性扩展的数据处理场景,允许用户:
- 动态分配计算资源
- 实现任务级别的隔离
- 利用K8s的调度能力优化资源利用率
开发者工具增强
考虑到Airflow 3仍处于开发阶段,项目特别提供了:
- 专用开发工具集:简化了针对Airflow 3的开发测试流程
- 版本检查优化:在过渡期只检查主版本号,避免频繁的兼容性调整
- CI/CD改进:直接从主分支安装Airflow进行测试,确保与最新进展保持同步
质量保证措施
团队在代码质量方面采取了多项措施:
- 预提交钩子更新:加强了代码提交前的自动化检查
- OpenLineage事件处理:针对Airflow 3调整了事件完成标记的关联方式
- 示例DAG补充:新增了基础任务组(basic_cosmos_task_group)的符号链接,便于测试
总结展望
Astronomer Cosmos v1.10.0a1预览版展现了项目团队对技术前沿的快速响应能力。通过提前布局Airflow 3兼容性,优化核心的dbt集成体验,以及增强开发者工具链,为数据工程团队提供了面向未来的解决方案。特别值得一提的是增量依赖管理功能,这在大型dbt项目中将带来显著的效率提升。
随着Airflow 3正式发布的临近,Cosmos项目已经做好了充分准备,帮助用户平滑过渡到新一代的工作流调度平台。这一版本虽然标记为预览版,但其完成度和稳定性已经达到了相当高的水平,值得关注数据编排领域的技术团队提前评估和试用。
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
jiuwenclawJiuwenClaw 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。Python0194- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
AtomGit城市坐标计划AtomGit 城市坐标计划开启!让开源有坐标,让城市有星火。致力于与城市合伙人共同构建并长期运营一个健康、活跃的本地开发者生态。01
awesome-zig一个关于 Zig 优秀库及资源的协作列表。Makefile00