【问题标题】:how to read and write (update) the same file using spark (scala)如何使用 spark(scala)读取和写入(更新)同一个文件
【发布时间】:2019-12-23 16:50:11
【问题描述】:

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

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

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

【问题讨论】:

  • 写入另一个路径,删除旧路径并重命名/移动新路径?
  • 检查点是 Raphael 所说的更好的主意。请检查我的答案以及在我的项目中有效的答案。如果您喜欢他们,请删除 -ve 投票,因为这不是错误的答案。

标签: scala apache-spark


【解决方案1】:

您可以通过编写临时表/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

【讨论】:

  • 这将与下面描述的方式一样工作 - 写入新文件,删除,重命名。这就是我在项目中编码的方式。我的答案没有错。
猜你喜欢
  • 2015-12-24
  • 1970-01-01
  • 2013-04-04
  • 2017-08-21
  • 1970-01-01
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多