本包目录(311 条)

重跑的幂等设计

任务重跑必须产出相同结果:优先“分区覆盖写”,其次“按主键 upsert”,再次“写临时表后切换”;流水账式累加(+=、count++)是最容易出错的模式。

推荐输出按分区覆盖(INSERT OVERWRITE PARTITION)
次选按主键 upsert / MERGE
避免依赖上次运行状态的累加逻辑

分区覆盖重跑

分区覆盖重跑
-- 重跑 2026-10-11 分区:先写该分区,覆盖旧结果
INSERT OVERWRITE TABLE ads_sales_daily PARTITION (dt = '2026-10-11')
SELECT dt, channel, SUM(amount)
FROM dwd_order WHERE dt = '2026-10-11'
GROUP BY dt, channel;
重跑前先确认输出分区不会被其他并发任务覆盖;跨任务写同一分区时加调度依赖或互斥。

易错点

  • 全表覆盖(不带分区)重跑会把历史数据清空,SQL 评审要专门检查
  • 用状态表记录进度的任务,重跑时要能回退状态,否则进度永远对不上

数据来源与参考

  • Apache Hive LanguageManual DML(INSERT OVERWRITE 语义)
  • 行业通用幂等重跑实践
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌