Spark

بازنویسی پویای پارتیشن‌ها (backfill امن)

حالت dynamic فقط همون پارتیشن‌هایی رو که توی DataFrame در حال نوشتن هستن جایگزین می‌کنه، نه کل جدول رو — همون تنظیمی که backfillها رو نجات میده.

کاربرد

بازپخش ۳ روز داده بدون این‌که به ۲ سال تاریخچه جدول دست بزنی.

پیش‌نیازها

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'")

نتیجه

>>> 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

اسنیپت‌های مرتبط

بازگشت به آزمایشگاه داده