0

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

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

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

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

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

4

1 回答 1

0

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

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

于 2012-07-12T11:28:50.620 回答