我非常激动地宣布 Apache Airflow 2.8.0 正式发布,带来大量重要的增强功能和新特性,将极大地惠及我们的社区。
详情:
📦 PyPI: https://pypi.ac.cn/project/apache-airflow/2.8.0/
📚 Docs: https://airflow.org.cn/docs/apache-airflow/2.8.0/
🛠 Release Notes: https://airflow.org.cn/docs/apache-airflow/2.8.0/release_notes.html
🐳 Docker Image: “docker pull apache/airflow:2.8.0”
🚏 Constraints: https://github.com/apache/airflow/tree/constraints-2.8.0
Airflow 对象存储 (AIP-58)
此功能为实验性功能,可能会发生更改。
Airflow 现在提供了一层通用抽象,能够覆盖 S3、GCS、Azure Blob Storage 等各种对象存储,使得在 DAG 中使用不同的存储系统无需修改代码。
此外,它还允许您使用大多数标准 Python 模块(如 shutil),这些模块能够处理类似文件的对象。
下面展示了如何使用该新特性打开文件的示例
from airflow.io.path import ObjectStoragePath
base = ObjectStoragePath("s3://my-bucket/", conn_id="aws_default") # conn_id is optional
@task
def read_file(path: ObjectStoragePath) -> str:
with path.open() as f:
return f.read()
上述示例只是冰山一角。该新特性还允许您为特定的 scheme 或协议配置替代后端。
下面展示了如何为 dbfs scheme 配置自定义后端的示例
from airflow.io.path import ObjectStoragePath
from airflow.io.store import attach
from fsspec.implementations.dbfs import DBFSFileSystem
attach(protocol="dbfs", fs=DBFSFileSystem(instance="myinstance", token="mytoken"))
base = ObjectStoragePath("dbfs://my-location/")
更多信息请参阅:Airflow 对象存储
对特定对象存储系统的支持取决于已安装的 provider,默认开箱即支持 file scheme。
将其他组件的日志发送到任务日志
此功能将来自 Scheduler、Executors 等多个 Airflow 组件的任务相关消息无缝集成到任务日志中,使用户能够在单一日志视图中轻松跟踪错误信息及其他相关内容。
目前,如果任务在启动前被调度器终止、因长时间排队而超时,或进入僵尸状态,这些情况都不会记录在任务日志中。通过此次增强,在上述情形下可以将错误信息写入任务日志,方便在 UI 上查看。
此功能可以开启或关闭,更多信息请参见 日志配置文档中的 “enable_task_context_logger”。
Dataset 监听钩子
请注意,监听器仍处于实验阶段,可能会发生更改。
该功能允许用户使用监听钩子订阅 Dataset 的创建和更新事件,特别适用于在 Dataset 被创建或更新时触发外部流程。
在 PythonVirtualEnvOperator 中使用额外的 Index URL 以及缓存功能
此功能可以为 PythonVirtualEnvOperator(及对应装饰器)指定额外的 Index URL,以便从(私有)额外的 Python 包仓库安装 virtualenv。
您还可以通过将 virtualenv 缓存在指定目录并在后续运行中复用,实现 virtualenv 的重用。只需在工作节点上将 venv_cache_path 设置为文件系统目录即可。
更多信息请参阅:PythonVirtualenvOperator
Web UI 改进
本次发布对 Web UI 进行了多项改进,包括
在网格视图中为运行状态添加多选功能
网格视图现在支持对运行状态进行多选,可一次选择多个状态来过滤网格视图中展示的 DAG 运行。

在图视图中改进任务状态可视化
现在可以通过任务边框颜色在图视图中查看任务状态,一眼即可辨别任务的当前状态。

默认禁用 DAG 文档和 DAG 参数描述中的原始 HTML 代码
作为我们持续提升 Airflow 默认安全性的措施之一,已默认禁用 DAG 文档和 DAG 参数描述中的原始 HTML 代码。我们非常关注您的安全,“默认安全”是我们坚守的原则。
其他值得注意的 UI 改进包括
- 简化 DAG 触发 UI
- 在触发 UI 表单中隐藏逻辑日期和运行 ID
- 将外部日志链接移动到 React 日志页面顶部
更多新特性和改进可在 Airflow 2.8.0 发布说明 中查阅。
贡献者
感谢所有为本次发布做出贡献的朋友们,包括 Amogh Desai、Andrey Anshin、Bolke de Bruin、Daniel Dyląg、Daniel Standish、Ephraim Anierobi、Hussein Awala、Jarek Potiuk、Jed Cunningham、Jens Scheffler、mhenc、Miroslav Šedivý、Pankaj Koti、Tzu-ping Chung、Vincent 以及其他 110 位提交者!正是有了你们,Airflow 才成为如此成功的项目!
祝您使用 Apache Airflow 2.8.0 感受愉快!
分享