第35章 Dagster 1.2 发布:全新 Pythonic 配置与多项集成更新
增强了对分区资产的支持,并引入了 Pythonic 配置和资源,同时更新了多项集成。欢迎使用我们最新的 Dagster 1.2 版本:“Formation”。
虽然本次版本包含许多重要的增量更新,但我们希望重点介绍两项功能:增强的分区资产支持,以及引入的 Pythonic 配置和资源。
此外,我们还有关于新增和升级集成,以及新指南和教程的消息。
分区数据资产与补填支持
本次版本对 Dagster 对分区软件定义资产(Software-defined Assets)的支持做了重大增强。
作为数据编排工具,Dagster 致力于在深层建模计算与数据之间的关系。为此,Dagster 提供了全面且灵活的机制来建模分区数据资产和数据流水线,并处理分区、资产、计算和时间之间复杂的交互。
以下是 1.2 版本中关于分区数据资产的新进展:
* 动态资产分区(实验性):有时在定义资产时,你无法提前确定分区集合。例如,你可能希望在每次新的数据文件落地到目录时添加新分区,或者在每次尝试新的超参数组合时进行实验。在这种情况下,可以使用 `DynamicPartitionsDefinition`。 * UI 中更新的资产图现在会显示每个分区资产已物化、缺失和失败分区的数量。 * 使用 `TimeWindowPartitionMapping`,资产分区现在可以依赖于同一资产的更早时间分区。补填(Backfills)和资产协调传感器在请求运行时会尊重这些依赖关系[示例在此提供]。`TimeWindowPartitionMapping` 接受 `start_offset` 和 `end_offset` 参数,允许指定时间分区依赖于上游资产更早或更晚的时间分区[查看文档]。
我们还在增强 Dagster 的补填能力。
Dagster 现在允许针对具有不同分区的资产执行补填,例如将每日资产汇总为每周资产,只要选择中的根资产分区方式相似即可。 现在可以选择将一系列资产分区传递给单个运行,而无需为每个分区启动一个补填运行[操作说明]。
此外,我们正在将分区资产的工作带入我们与数据仓库的集成中。请查看下方的集成部分。
Pythonic 配置和资源
在 Dagster 1.2 中,我们推出了 Pythonic 配置和资源的第一阶段功能。
用户定义的值通过配置 API 在运行时提供给 Dagster 作业或软件定义资产。
1.2 版本发布的新 Pythonic 配置 API 使 Dagster 开发者能够以更流畅、可靠的方式向资产和作业提供此类参数。
底层实现中,这些配置模型利用了 Pydantic(一个流行的 Python 数据验证和序列化库),因此对许多 Python 开发者来说应该很熟悉。
在执行期间,通过保留用于此目的的参数 `config`,可以在 op 或资产内部访问传入的配置值。
新 API 支持复杂的配置模式,例如文件列表、嵌套模式或联合类型。
资源页面展示了有用的资源元数据,并从环境变量中获取的值会高亮显示。资源页面让你可以一目了然地知道你的 Dagster 实例配置了哪些外部服务交互。
请注意,在 Dagster 1.2 中,Pythonic 配置和资源功能被标记为“实验性”,因为我们希望在完全确定之前收集更多用户反馈。请跟踪 GitHub 讨论。
集成更新
正如 Dagster 博客近期报道的那样,我们继续加大对 Dagster 集成库的投入。我们更新了 Snowflake、DuckDB 和 BigQuery 集成,为 IO Manager 添加了分区支持。我们在那篇博客文章中宣布的更新现已在 1.2 版本中上线。
具体包括:
* Weights and Biases:使用 Dagster 编排 MLOps 流水线并维护 ML 资产。[阅读文档] * Snowflake + PySpark:使用 `snowflake_pyspark_io_manager` 将 PySpark DataFrame 存储和加载为 Snowflake 表。[阅读文档] * Google BigQuery:使用 `bigquery_pandas_io_manager` 和 `bigquery_pyspark_io_manager` 将 Pandas 和 PySpark DataFrame 存储和加载为 BigQuery 表。[阅读文档] * Airflow:更新后的 dagster-airflow 集成使从 Airflow 迁移到 Dagster 变得更加容易。请参阅文档中的详细迁移指南,或聆听已完成迁移的公司的声音。 * Databricks: * 使用 op 工厂为运行现有 Databricks 作业创建 op(`create_databricks_run_now_op`)。 * 提交一次性 Databricks 作业(`create_databricks_submit_run_op`)。 * 你还可以找到升级后的 Databricks 集成的更新文档和指南。
新指南与教程
伴随这些新功能的发布,1.2 版本同时推出了一系列配套指南:
* “资产版本控制与缓存”:如果结果相同,为何还要花费时间重新物化资产?构建可记忆化的资产图,以加快开发工作流并节省计算资源。 * “自动化你的流水线”:Dagster 提供了几种自动化流水线的方式。本指南帮助你为项目选择合适的方法。 * “项目结构最佳实践指南”:本指南推荐了一些项目结构化的最佳实践,对于开始扩展其 Dagster 实施的团队最有用。 * “Dagster Dev”:在跟进这一较小(但非常受欢迎)的更新后,我们很高兴地添加了关于 `dagster dev` 命令的完整指南,该命令可以通过一条命令从命令行启动 Dagster 的完整部署。 * “软件定义资产入门”:对在 Dagster 中创建、维护和测试资产的基础知识进行逐步讲解。
对于刚开始接触 Python 的数据工程师,我们最近发布了关于使用 Python 与 Dagster 的五部分指南的第一部分和第二部分,你可以在 Dagster 博客上找到。
1.1.x 贡献者
我们非常感谢 Dagster 项目的社区贡献者,他们通过建议新功能、提交 PR 以及帮助识别和记录 bug 提供了宝贵的输入。
向 1.1.0 到 1.1.21 的所有贡献者致敬——如果没有你们的帮助,Dagster 不会成为今天的模样。
joel-olazagasti | herbert-allium | reidab | vpicavet | clayheaton | EmilRex | joshuataylor | Nintorac | nsfinkelstein | CodeMySky | roeij | GrigoriiKushnir | danielgafni | plaflamme | emilija-omnisend | michaeljguarino | spenczar | vwbusguy | binhnefits | severo | mpicard | C0DK | AlexanderVR | adam-bloom | DustyShap | nicholsn | pzarabadip | nickvazz | akan72 | zyd14 | toddy86 | asharov | chrishiste | chriszs
有反馈或问题?在 Slack 或 GitHub 开始讨论。 有兴趣与我们合作?查看我们的开放职位。 想要更多内容?在 LinkedIn 上关注我们。