spark [dataframe].write.option("mode","overwrite").saveAsTable("foo") 如果 foo 存在则失败并返回 'already exists'
spark [dataframe].write.option("mode","overwrite").saveAsTable("foo") fails with 'already exists' if foo exists
我想我在 spark 中看到了一个错误,其中模式 'overwrite' 未被遵守,而是在尝试将 saveAsTable 保存到已经存在的 table 中时抛出异常(使用模式 'overwrite').
下面是一个重现该问题的小脚本。最后一条语句导致堆栈跟踪读取:
org.apache.spark.sql.AnalysisException: Table `example` already exists.;
非常感谢任何建议。
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
不勾选额外选项,直接用mode
df3.write.mode(SaveMode.Overwrite).saveAsTable("example")
或
df3.write.mode("overwrite").saveAsTable("example")
我想我在 spark 中看到了一个错误,其中模式 'overwrite' 未被遵守,而是在尝试将 saveAsTable 保存到已经存在的 table 中时抛出异常(使用模式 'overwrite').
下面是一个重现该问题的小脚本。最后一条语句导致堆栈跟踪读取:
org.apache.spark.sql.AnalysisException: Table `example` already exists.;
非常感谢任何建议。
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
不勾选额外选项,直接用mode
df3.write.mode(SaveMode.Overwrite).saveAsTable("example")
或
df3.write.mode("overwrite").saveAsTable("example")