Écrasement dynamique de partitions (backfill sûr)
Le mode dynamic ne remplace que les partitions présentes dans le DataFrame écrit, au lieu de purger toute la table — le réglage qui sauve les backfills.
Cas d'usage
Rejouer 3 jours de données sans toucher aux 2 ans d'historique de la table.
Prérequis
PySpark 3.x
Python
# STATIC (défaut) : mode overwrite + partitionBy supprime TOUTES les partitions
spark.conf.set("spark.sql.sources.partitionOverwriteMode", "dynamic")
(
df_fixed_days # contient uniquement les jours rejoués
.write
.mode("overwrite")
.partitionBy("event_date")
.parquet("s3a://lake/silver/events/")
)
# Seules les partitions event_date présentes dans df_fixed_days sont réécrites.
# Équivalent Delta sans config : replaceWhere explicite
# .option("replaceWhere", "event_date BETWEEN '2026-06-01' AND '2026-06-03'")Résultat
>>> df_fixed_days.select("event_date").distinct().orderBy("event_date").show()
+----------+
|event_date|
+----------+
|2026-06-01|
|2026-06-02|
|2026-06-03|
+----------+
Partitions de la table : 730 avant / 730 apres
Seules event_date=2026-06-01..03 reecrites (mtime 08:14), historique intact.PySparkpartitionByBackfillParquet