如何使用Spark(Scala)读取和写入(更新)相同的文件



我想根据某些条件更新CSV文件,为此我阅读了该文件,进行了所有需要的更新,但是当我尝试编写它时,我得到了一个FileNotFoundException.

我认为这是由于写入过程,因为当我访问路径(输入/输出文件所在的位置(时,我发现它是空的。

有没有更好的方法来更新文件?如果没有,我该如何解决FileNotFoundException错误?

您可以通过编写临时表/csv或使用checkpointing来做到这一点:

这有效:

sparkSession.sparkContext.setCheckpointDir("tmp")
ss.read.csv("test.csv") // read existing csv
.withColumn("test",lit(1)) // modify
.checkpoint(eager = true) // checkpoint, write to disk
.write.mode("overwrite") 
.csv("test.csv") // write to same location

最新更新