Я получил задание Spark Structured Streaming от Kafka, при котором данные поступают в пакетном режиме примерно каждые 15 минут. Поскольку есть потенциальные периоды простоя, я включил «spark.dynamicAllocation». Это, кажется, делает свое дело, высвобождая ресурсы после 60 секунд простоя.
Однако в результате, когда исполнителю назначается снова, файл Jar моего приложения снова копируется в рабочую папку Spark. И после нескольких дней работы у меня в папке с искрой есть несколько ГБ дублированных файлов JAR. Я попытался включить '-Dspark.worker.cleanup.enabled = true', однако, поскольку приложение все еще работает, данные этого приложения не очищаются.
Чего мне не хватает? Есть ли способ очистить старые файлы Jar / Executor в работающем приложении? Или есть способ предотвратить копирование файла Jar при каждом назначении исполнителя?
Я увеличил значение executorIdleTimeout> 15 минут, что не позволило файлам Jar заполнить место на диске. , но мое приложение также содержало ресурсы, которые при необходимости могли быть освобождены для других приложений.
Это работает на автономном Spark Cluster.