问题现象
spark.version < 3.0.1 执行下面语句报错: Cannot overwrite a path that is also being read from ...
哪些情况算同时读写自己?
如果读自己和写自己在一个spark stage中,就算同时读写自己.
spark.table("tb1")
// 其他stransform
.write.mode("overwrite")
.insertInto("tb1")
// .saveAsTable("tb1")
找到对应的jira单子
[SPARK-33982] Sparksql does not support when the inserted table is a read table - ASF JIRA
可以看到这个问题在spark3.0.1才解决.
所以 如果你的版本<3.0.1 请使用写入临时中间表,再读取中间表后写入,或者借助checkpoint打断链子;
如果你是从spark2升级到 spark3.0.1之后 请优化代码,剔除写入临时中间表的冗余操作.