Можно, но вам придется кэшировать исходный кадр данных перед перезаписью, иначе отложенная загрузка данных из паркета вызовет проблемы при записи в то же место.
Простой пример
val sourceFile = "/tmp/testoverwrite/A"
val init = List(("A", 1), ("B", 1), ("C", 1)).toDF("X", "count")
init.write.mode(SaveMode.Overwrite).parquet(sourceFile)
val rand = Random
(0 to 3).foreach{_ =>
val A = spark.read.parquet(sourceFile).cache()
val _ = A.count() // Trigger cache
val B = (0 to 4).map(_ =>((rand.nextInt(10) + 65).toChar.toString, 1)).toDF("X", "count")
A.union(B).groupBy('X).agg(sum('count).as("count"))
.write.mode(SaveMode.Overwrite).parquet(sourceFile)
A.unpersist(true)
}
val A = spark.read.parquet(sourceFile).show()