Scala Spark-覆盖实木复合地板文件无法删除文件或目录

时间:2018-07-27 15:24:48

标签: scala apache-spark parquet

我试图在本地创建几天的镶木地板文件。第一次运行代码时,一切正常。第二次它无法删除文件。第三次它无法删除另一个文件。无法删除文件是完全随机的。

之所以需要它,是因为我想在过去的7天里每天创建镶木地板文件。因此,应该使用更新的数据覆盖已经存在的镶木地板文件。

我使用Project SDK 1.8,Scala版本2.11.8和Spark版本2.0.2。

第二次运行该行代码后:

newDF.repartition(1).write.mode(SaveMode.Overwrite).parquet(
    OutputFilePath + "/day=" + DateOfData)

发生此错误:

WARN FileUtil: 
Failed to delete file or dir [C:\Users\...\day=2018-07-15\._SUCCESS.crc]: 
it still exists.
Exception in thread "main" java.io.IOException: 
Unable to clear output directory file:/C:/Users/.../day=2018-07-15 
prior to writing to it
    at org.apache.spark.sql.execution.datasources.InsertIntoHadoopFsRelationCommand.run(InsertIntoHadoopFsRelationCommand.scala:91)

第三次之后:

WARN FileUtil: Failed to delete file or dir 
[C:\Users\day=2018-07-20\part-r-00000-8d1a2bde-c39a-47b2-81bb-decdef8ea2f9.snappy.parquet]: it still exists.
Exception in thread "main" java.io.IOException: Unable to clear output directory file:/C:/Users/day=2018-07-20 prior to writing to it
    at org.apache.spark.sql.execution.datasources.InsertIntoHadoopFsRelationCommand.run(InsertIntoHadoopFsRelationCommand.scala:91)

您看到的是它不是第二次运行代码的另一个文件。 依此类推..手动删除文件后,可以创建所有镶木地板文件。

有人知道这个问题以及如何解决吗?

编辑:它始终是无法删除的crc文件。

3 个答案:

答案 0 :(得分:1)

感谢您的回答。 :) 解决方案是不写在Users目录中。似乎存在权限问题。因此,我在C:目录中创建了一个新文件夹,它可以正常工作。

答案 1 :(得分:0)

也许另一个Windows进程对该文件进行了锁定,因此无法将其删除。

答案 2 :(得分:0)

在Windows中打开目标目录时,会发生此问题。您只需要关闭目录即可。