Scala Spark - 覆盖镶木地板文件无法删除文件或目录
Scala Spark - overwrite parquet file failed to delete file or dir
我正在尝试在本地创建镶木地板文件几天。我第一次 运行 代码时,一切正常。第二次删除文件失败。第三次删除另一个文件失败。哪个文件不能删除是完全随机的。
我需要它工作的原因是因为我想在过去 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文件,删不掉。
可能另一个 Windows 进程锁定了该文件,因此无法删除它。
感谢您的回答。 :)
解决办法就是不写在Users目录下。似乎存在权限问题。所以我在 C: 目录中创建了一个新文件夹,它运行完美。
当您打开 windows 中的目标目录时会出现此问题。您只需要关闭目录即可。
我正在尝试在本地创建镶木地板文件几天。我第一次 运行 代码时,一切正常。第二次删除文件失败。第三次删除另一个文件失败。哪个文件不能删除是完全随机的。
我需要它工作的原因是因为我想在过去 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文件,删不掉。
可能另一个 Windows 进程锁定了该文件,因此无法删除它。
感谢您的回答。 :) 解决办法就是不写在Users目录下。似乎存在权限问题。所以我在 C: 目录中创建了一个新文件夹,它运行完美。
当您打开 windows 中的目标目录时会出现此问题。您只需要关闭目录即可。