Je pense que je vois un bug dans spark Où mode "écrasé" n'est pas respecté, une exception est plutôt lancée pour tenter de faire sauveille dans une table qui existe déjà (en utilisant le mode "écraser" ).
Vous trouverez ci-dessous un petit écriture qui reproduit le problème. La dernière déclaration aboutit à une lecture de la pile:
org.Apache.spark.sql.AnalysisException: Table `example` already exists.;
Tout conseil très apprécié.
spark.sql("drop table if exists example ").show()
case class Person(first: String, last: String, age: Integer)
val df = List(
Person("joe", "x", 9),
Person("fred", "z", 9)).toDF()
df.write.option("mode","overwrite").saveAsTable("example")
val recover1 = spark.read.table("example")
recover1.show()
val df3 = List(
Person("mouse", "x", 9),
Person("golf", "z", 9)).toDF()
df3.write.
option("mode","overwrite").saveAsTable("example")
val recover4 = spark.read.table("example")
recover4.show()
saveAsTable
_ ne vérifie pas les options supplémentaires, utilisez mode
directement
df3.write.mode(SaveMode.Overwrite).saveAsTable("example")
ou alors
df3.write.mode("overwrite").saveAsTable("example")