Какой путь вы проходите, когда пишете фрейм данных? Я не нашел функцию partitionOf для искрового фрейма данных.
Я думаю, что это должно работать для вашего случая
df.write.mode("append").partitionBy("department").parquet("location/")
Если вы не хотите добавлять данные для уже существующих разделов, найдите ключ разделения из существующего паркета, удалите данные с этими ключами раздела и запишите оставшиеся данные в режиме добавления.
скала код:
val dfi=spark.read.parquet(pathPrefix+finalFile).select(col("department"))
val finalDf = df.join(dfi, df.col("department") == dfi.col("department"), "left_outer")
.where(dfi.col("department").isNull())
.select(dfl.columns.map(col):_*)
finalDf.write.mode("append").partitionBy("department").parquet("location/")
Вы можете оптимизировать первый шаг (создание dfi), находя ключи раздела в вашем Dataframe и сохраняя только те ключи раздела, для которых существует путь.