| 目标 | 同一批数据重跑多次结果一致 |
|---|---|
| 手段 | upsert、分区覆盖、临时表切换 |
| 前提 | 有稳定主键或分区键 |
MySQL 幂等写入
MySQL 幂等写入
INSERT INTO dwd_order (order_id, amount, updated_at)
VALUES (%s, %s, %s)
ON DUPLICATE KEY UPDATE amount = VALUES(amount), updated_at = VALUES(updated_at);Hive/Spark 分区覆盖
Hive/Spark 分区覆盖
INSERT OVERWRITE TABLE dwd_order PARTITION (dt = '2026-10-11')
SELECT ... FROM ods_order WHERE dt = '2026-10-11';不带分区的 INSERT OVERWRITE 会清空整表重建,误用一次就是全量事故。