Перезапись Spark не удаляет файлы в целевом пути

#apache-spark #pyspark #partitioning #overwrite

Вопрос:

Моя цель-создать ежедневный процесс, который будет перезаписывать все разделы по определенному пути в S3 новыми данными из фрейма данных.

Я делаю — df.write.format(source).mode("overwrite").save(path) (Также попробовал опцию динамической перезаписи).

Однако в некоторых запусках старые данные не удаляются. Означает, что я вижу файлы со старой даты вместе с новыми файлами в одном разделе. Я подозреваю, что это как-то связано с запусками, которые прервались в середине из-за проблем с памятью и оставили некоторые поврежденные файлы, которые при следующем запуске не удалили, но пока не смогли воспроизвести.

Комментарии:

1. Если вы зададите запрос, увидите ли вы новые или новые старые данные?

2. Старое новое, так что получаем дубликаты

Ответ №1:

spark.conf.set(«spark.sql.sources.partitionOverwriteMode», «динамический») — опция сохранит существующий раздел и перезапишет один раздел. если вы хотите перезаписать все существующие разделы и сохранить текущий раздел, снимите настройки, указанные выше. ( я тестировал в версии spark 2.4.4)

Комментарии:

1. Тем не менее, если предыдущий запуск не удался в середине — перезапись не удаляет файлы в целевом объекте.