Solutions Architect Intern · Technical Fundamentals

Amazon SA Intern:什么是 ETL?增量、重试和数据质量怎样说明?

从Extract/Transform/Load讲到watermark、late data、幂等和ETL/ELT差异。

题目重点:从Extract/Transform/Load讲到watermark、late data、幂等和ETL/ELT差异。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 题目明确什么是ETL,可能因简历经历触发;未给源系统/代码,以下订单数据是训练例。
  • 训练从业务库到分析仓库,目标可按orderID/版本幂等upsert;append-only目标需另一去重合同。

解题路线

  1. Extract取源数据,Transform做类型/去重/连接/业务派生/质量校验,Load入目标;ELT先保原始再在目标处理,位置选择受治理、算力、延迟和成本影响,不能称一种绝对更现代。
  2. 全量简单但成本随历史增,增量按watermark/CDC更高效但要覆盖更新/删除与晚到。event time和ingest time不同,单纯max timestamp可能跳过同时间多行或晚到修订,需复合游标/重叠窗口去重。
  3. 重试必须幂等:稳定业务键+版本upsert、去重或分区原子替换。checkpoint只在目标提交可恢复后推进;先推进后写失败会丢数据,写成功但ack丢了重试会重复,除非目标幂等。
  4. 质量规则明确必需字段、类型、范围、唯一性和跨表约束,错误隔离quarantine并可重放。不能一遇坏行就静默丢弃还报告job成功;允许缺失规则要有业务owner。
  5. 监控端到端freshness、完整性/正确率、失败/重试、费用与上游schema版本。job green不代表仓库没漏一个分区,需对账counts/校验和或业务金额不变量。
  6. 保原始可追溯数据与变换版本便于backfill,回填不能覆盖新版本正确记录;权限和敏感字段治理贯穿源/中间/目标。公开ETL概念参考https://aws.amazon.com/what-is/etl/,本例恢复合同自拟。

手动走一遍

批次读取游标v100..v200,目标upsert成功但进程在checkpoint之前宕机;恢复重读同批,orderID+version幂等不重复。若先把checkpoint设v200而目标未提交,恢复从v201开始会漏整批。时间游标同秒两条记录还要稳定次序键,不能只存最大时间。

规模与取舍

扫描B条成本至少O(B),join/sort依变换计划;增量降低重复历史扫描但增加checkpoint/CDC状态。吞吐、延迟和故障恢复要核源/队列/目标各瓶颈,不能只报Transform复杂度。

易错点与追问

容易失分的边界

  • job成功等于数据正确。
  • watermark先推进再写。
  • max事件时间覆盖所有晚到。
  • 重试append产生重复。
  • backfill覆盖较新数据。

继续深挖

  • 晚到更新/删除怎样同步?
  • 目标没有upsert时怎样幂等?
  • schema变更如何兼容旧数据?
  • 怎样对账数据完整性?

技术参考

  • AWS ETL概念:公开概念/机制参考,本文容量与故障案例自拟;不代表原面试系统。
✓已复制微信号!