sql - spark [dataframe].write.option("mode","overwrite").saveAsTable("foo") 如果 foo 存在,则失败并显示“已经存在”
问题描述
我想我在 spark 中看到了一个错误,其中不尊重模式“覆盖”,而是在尝试将 saveAsTable 放入已经存在的表(使用模式“覆盖”)时抛出异常。
下面是一个重现该问题的小脚本。最后一条语句导致堆栈跟踪读取:
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")
推荐阅读
- google-apps-script - 当脚本无法输入时如何修复谷歌电子表格中的自定义函数?
- material-ui - 为 Material UI 组件设置特定的类
- python - 拦截分配给 sys.stdout 和 sys.stderr
- c++ - 无法使用 cmake 编译简单的项目结构(使用 catch2 库)
- java - 有目的地避免 ArrayIndexOutOfBoundsException
- vb.net - 如何使用我的应用程序安装 SQL Server LocalDB?
- powershell - 如何保持 psobjects 有序?
- sapui5 - 使用 TableSelectDialog 的选定上下文作为表的模型
- mysql - Mysql自动处理锁定
- python - 未满足 1 个特定条件时的“IndexError: list index out of range”