Dynamic partition overwrite (safe backfill)
Dynamic mode only replaces the partitions present in the written DataFrame, instead of wiping the whole table — the setting that saves backfills.
Prerequisites
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'")Result
>>> 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