Ploomber 快速入门指南:构建高效数据流水线
什么是 Ploomber
Ploomber 是一个 Python 数据流水线框架,它通过声明式语法帮助数据科学家和工程师构建、管理和部署数据处理工作流。Ploomber 的核心特点是其表达力强的语法,使得流水线声明像蓝图一样清晰可见,不仅包含任务执行顺序,还明确指定了输出存储位置和形式。
核心概念
在开始使用 Ploomber 前,我们需要了解几个核心概念:
- DAG (有向无环图):表示任务及其依赖关系的结构
- Task (任务):流水线中的单个处理单元
- Product (产品):任务输出的结果
- Upstream (上游):当前任务依赖的前置任务
快速开始示例
1. 定义处理函数
首先,我们定义两个简单的数据处理函数:
from pathlib import Path
import tempfile
import pandas as pd
import numpy as np
def get_data(product):
"""生成随机数据"""
df = pd.DataFrame({"column": np.random.rand(100)})
df.to_csv(str(product))
def clean_data(upstream, product):
"""清洗数据"""
data = pd.read_csv(str(upstream["get_data"]))
clean = data[data.column >= 0.5] # 只保留大于0.5的值
clean.to_csv(str(product))
2. 创建 DAG 和任务
接下来,我们创建一个 DAG 对象并向其中添加任务:
from ploomber import DAG
from ploomber.tasks import PythonCallable
from ploomber.products import File
# 创建临时目录存储数据
tmp_dir = Path(tempfile.mkdtemp())
# 初始化DAG
dag = DAG()
# 创建任务
task_get = PythonCallable(
get_data,
product=File(tmp_dir / "raw_data.csv"), # 指定输出文件
dag=dag,
name="get_data" # 给任务命名
)
task_clean = PythonCallable(
clean_data,
product=File(tmp_dir / "clean_data.csv"),
dag=dag,
name="clean_data"
)
3. 定义任务依赖关系
使用 >>
运算符定义任务间的依赖关系:
task_get >> task_clean # get_data完成后执行clean_data
4. 执行流水线
执行整个流水线非常简单:
dag.build()
高级特性
增量执行
Ploomber 会跟踪代码变更,只有修改过的任务才会重新执行:
# 第一次执行会运行所有任务
dag.build()
# 如果没有代码变更,再次执行不会运行任何任务
dag.build() # 输出显示所有任务都跳过了
测试钩子
可以为任务添加测试钩子,在任务完成后自动执行验证:
def validate_no_nas(task):
"""验证输出数据没有缺失值"""
print(f"验证 {task.name} 的输出...")
df = pd.read_csv(str(task.product))
assert not df.column.isna().sum()
# 为任务添加验证函数
task_get.on_finish = validate_no_nas
task_clean.on_finish = validate_no_nas
# 强制重新执行所有任务(包括验证)
dag.build(force=True)
交互式探索
Ploomber 提供了方便的API来探索流水线结构:
# 获取特定任务
clean_task = dag["clean_data"]
# 查看上游依赖
print(clean_task.upstream) # 输出: {'get_data': ...}
# 查看任务状态
dag.status()
实际应用建议
- 项目结构:将不同阶段的任务组织到不同的模块中
- 参数化:使用参数模板使流水线更灵活
- 文档化:为每个任务添加清晰的文档字符串
- 测试:为关键任务添加验证钩子
- 监控:利用状态检查功能监控流水线健康状态
总结
Ploomber 提供了一种优雅的方式来构建和管理数据流水线。通过本指南,您已经学会了:
- 如何定义数据处理函数
- 如何创建任务和定义依赖关系
- 如何执行和监控流水线
- 如何使用高级功能如增量执行和测试钩子
Ploomber 的这些特性使其成为构建复杂数据流水线的强大工具,特别适合需要频繁迭代和验证的数据科学项目。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考