【问题标题】:Spark remove Apache Orc fileSpark 删除 Apache Orc 文件
【发布时间】:2017-07-13 15:57:14
【问题描述】:

我使用 spark shell 将 spark 数据帧存储为 orc 文件,如下所示:

    jdbcDF.write.format("orc").partitionBy("ID").save("applicationsPartitioned")

我发现数据现在存在于 windows\system32\applicationsPartitioned 中

如何正确删除 orc 文件? 我可以自己关闭 spark 并删除目录,但是是否有一些元数据存储在这个目录的某个地方?

【问题讨论】:

  • 您是否以管理员身份运行cmd
  • 是的,如果我不这样做,那么 spark-shell 会出现很多错误
  • 在调用 spark-shell 之前更改目录。它默认为 C:\Windows\System32\,不建议从那里写入/删除内容。你永远不知道它什么时候会破坏一些东西。毕竟是 Windows。
  • 谢谢,这也很有帮助。我是新来的火花,仍在一步一步地弄清楚。我现在创建了一个 cmd.exe 的快捷方式,它将以管理员身份运行 + 自动切换目录并启动 spark-shell。这样就不会忘记了。

标签: apache-spark orc


【解决方案1】:

您必须手动完成,但是您可以使用 hadoop 文件系统来完成。

例如:

import org.apache.hadoop.fs.FileSystem
import org.apache.hadoop.fs.Path
val fs = FileSystem.get(spark.sparkContext.hadoopConfiguration)
fs.delete(new Path(path), recursive)

这将使其独立于操作系统和文件系统。

【讨论】:

  • 我将“hadoopfs.delete(new Path(path), recursive)”更改为“fs.delete(new Path(path))”,效果很好,谢谢!
【解决方案2】:

我认为必须手动删除目录,但如果您尝试删除目录以进行下一个输出,您可以简单地使用方法 mode() 覆盖现有目录

jdbcDF.write.format("orc")
.mode(SaveMode.Overwrite)
.partitionBy("ID")
.save("applicationsPartitioned")

希望这会有所帮助!

【讨论】:

  • 谢谢,以后可能会用到,但这次我只是想删除它,因为它不在正确的位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-27
  • 2020-02-19
  • 2018-03-28
  • 2018-08-29
  • 2017-08-07
  • 2020-01-20
  • 2012-03-26
相关资源
最近更新 更多