【问题标题】:hadoop S3n empty directories not being deletedhadoop S3n空目录没有被删除
【发布时间】:2012-07-12 19:28:50
【问题描述】:

我正在使用 Hadoop FileStatus API 来确定文件夹是否为空,以便删除目录。

为了确定我在 s3n 上是否有一个空目录,我要做的是检查 FileStatus[] 长度,如果它等于零,那么我请求 Hadoop 文件系统通过 fs.delete(path, false )。这里的 False 表示非递归删除请求。

对于 FTP 和 HDFS,文件以及包含这些文件的空目录将按预期删除。但是对于 S3n,空目录仍然存在。我不确定为什么会这样。

我有使用内存 S3 文件系统的本地单元/集成测试,这里的删除按预期工作。但是,当针对真正的 S3n 文件系统运行代码时,它会失败(空目录没有被删除,但文件被删除)。

任何建议或指示将不胜感激。 谢谢。

【问题讨论】:

  • 几个问题可能会帮助其他试图帮助您的人:您是否收到任何异常或错误消息?您是否启用了版本控制?
  • 不,没有例外,没有消息。版本控制是什么意思?
  • 我的意思是:“您的 S3 存储桶是否启用了版本控制?”
  • 没有,据我所知没有。但是我发现如果目录包含文件,递归删除确实有效。由于文件删除而变为空的目录按预期删除。但是,如果我尝试从一开始就删除空目录,那么目录仍然存在。
  • 嗯,S3 是一个“平面”文件系统,没有文件夹的概念。长度可能为零,仅仅是因为没有具有该名称的文件。您所说的“目录”实际上只是 S3 中的文件前缀。看看this answer,它可能有助于澄清。

标签: hadoop amazon-s3


【解决方案1】:

由于您没有看到任何异常或错误消息,并且您的存储桶似乎没有启用版本控制,因此您应该尝试以下方法:

S3 是一个“平面”文件系统,没有文件夹的概念。长度可能为零只是因为没有具有该名称的文件。您所说的“目录”实际上只是 S3 中的文件前缀。看看this answer,它可能有助于澄清。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    • 2014-10-25
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 2011-02-18
    相关资源
    最近更新 更多