数据管道架构师 data-pipeline-architect

数据管道架构师技能专注于设计和实现高效、可靠的数据管道,涵盖ETL/ELT流程、编排工具、错误处理和数据质量验证,确保数据从源到目标的顺畅流动。关键词:数据管道、ETL、ELT、数据工程、架构设计、数据质量、编排、数据仓库。

数据工程 0 次安装 0 次浏览 更新于 3/7/2026

name: data-pipeline-architect description: 设计ETL/ELT数据管道,包含正确的提取、转换和加载模式,以及编排、错误处理和数据质量验证。 license: MIT

数据管道架构师

该技能提供设计稳健、可扩展数据管道的指导,可靠地将数据从源移动到目的地。

核心能力

  • ETL vs ELT: 传统提取-转换-加载与现代提取-加载-转换模式
  • 编排: Airflow、Dagster、Prefect、dbt用于工作流管理
  • 数据质量: 验证、监控、血缘跟踪
  • 可扩展性: 批处理 vs 流处理、分区、并行化

管道设计过程

1. 需求分析

开始管道设计时,收集:

  • 源系统和数据格式(API、数据库、文件、流)
  • 目标目的地(数据仓库、数据湖、湖仓一体)
  • 新鲜度要求(实时、每小时、每天)
  • 数据量和速度估计
  • 质量和合规要求

2. 架构选择

批处理管道 - 用于周期性批量处理:

  • 计划驱动(每小时、每天、每周)
  • 更高的延迟容忍度
  • 更简单的错误恢复(重新运行整个批次)
  • 工具:Airflow、dbt、Spark

流处理管道 - 用于实时要求:

  • 事件驱动处理
  • 亚秒到分钟延迟
  • 复杂状态管理
  • 工具:Kafka、Flink、Spark Streaming

混合方法 - Lambda或Kappa架构:

  • 批处理层用于完整性
  • 速度层用于低延迟
  • 服务层用于查询

3. ETL vs ELT 决策

ETL(加载前转换):

  • 当目标计算能力有限时
  • 当转换显著减少数据体积时
  • 当敏感数据必须在落地前屏蔽时
  • 传统数据仓库模式

ELT(加载后转换):

  • 现代云仓库计算成本低
  • 当需要保留原始数据时
  • 当转换频繁变化时
  • dbt风格在仓库中的转换

4. 管道组件

提取层:

  • 完全提取 vs 增量(CDC、基于时间戳)
  • API分页和速率限制
  • 连接池和重试逻辑
  • 模式检测和漂移处理

转换层:

  • 数据清洗和标准化
  • 业务逻辑应用
  • 聚合和反规范化
  • 类型转换和空值处理

加载层:

  • 更新策略(合并、删除+插入)
  • 分区方案(时间、哈希、范围)
  • 索引管理
  • 事务边界

5. 错误处理模式

┌─────────────────────────────────────────────────────────┐
│                    管道执行                    │
├─────────────────────────────────────────────────────────┤
│  ┌─────────┐    ┌───────────┐    ┌──────────┐          │
│  │ 提取   │───▶│ 转换     │───▶│   加载   │          │
│  └────┬────┘    └─────┬─────┘    └────┬─────┘          │
│       │               │               │                 │
│       ▼               ▼               ▼                 │
│  ┌─────────┐    ┌───────────┐    ┌──────────┐          │
│  │ 重试    │    │ 死信队列  │    │ 回滚    │          │
│  │ 带退避  │   │           │    │ 检查点  │          │
│  └─────────┘    └───────────┘    └──────────┘          │
└─────────────────────────────────────────────────────────┘
  • 带退避的重试: 临时故障(网络、速率限制)
  • 死信队列: 无法处理的毒消息
  • 检查点: 从最后一个成功点恢复
  • 幂等性: 安全重新运行而无重复

6. 数据质量框架

在每个阶段实施检查:

阶段 检查类型 示例
提取 完整性 行数与源匹配
提取 新鲜度 数据时间戳在SLA内
转换 有效性 值在预期范围内
转换 唯一性 主键唯一
加载 对账 目标匹配源总计
加载 完整性 外键有效

7. 监控和可观测性

要跟踪的基本指标:

  • 管道持续时间和趋势
  • 每个阶段的行数
  • 错误率和类型
  • 数据新鲜度(自上次成功运行以来的时间)
  • 资源利用率

警报:

  • SLA违规(数据不新鲜)
  • 异常行数(与基线±20%)
  • 源中的模式变化
  • 重复失败

常见模式

缓慢变化维度(SCD)

  • 类型1: 覆盖(无历史)
  • 类型2: 添加带有效日期的行
  • 类型3: 先前值列
  • 类型4: 历史表

增量处理

-- 基于时间戳的增量
SELECT * FROM source
WHERE updated_at > {{ last_run_timestamp }}

-- CDC-based (Change Data Capture)
-- 从事务日志捕获插入、更新、删除

幂等加载

-- 删除 + 插入模式
DELETE FROM target WHERE date_partition = '2024-01-15';
INSERT INTO target SELECT * FROM staging WHERE date_partition = '2024-01-15';

-- 合并/更新插入模式
MERGE INTO target t
USING staging s ON t.id = s.id
WHEN MATCHED THEN UPDATE SET ...
WHEN NOT MATCHED THEN INSERT ...

参考

  • references/orchestration-patterns.md - Airflow、Dagster、Prefect模式
  • references/data-quality-checks.md - 验证框架和规则
  • references/pipeline-templates.md - 常见管道架构