我正在使用Hadoop FileStatus API来确定文件夹是否为空,以便删除目录。
为了确定s3n上是否有空目录,我要做的是检查FileStatus []的长度,如果它等于零,那么我请求Hadoop Filesystem通过fs.delete(path,false)进行删除。此处的False表示非递归删除请求。
对于FTP和HDFS,将按预期删除文件,然后删除包含这些文件的空目录。但是对于S3n,将保留空目录。我不确定为什么会这样。
我有使用内存S3文件系统的本地单元/集成测试,在这里删除按预期工作。但是,在实际的S3n文件系统上运行代码时,它会失败(空目录未删除,但文件已删除)。
任何建议或指针将不胜感激。
谢谢。
最佳答案
由于您没有看到任何异常或错误消息,并且您的存储桶似乎未启用版本控制,因此您应该尝试以下操作:
S3是“平面”文件系统,没有文件夹的概念。长度可能为零是因为没有文件具有该名称。实际上,您所谓的“目录”只是S3中的文件前缀。查看this answer,因为它可能有助于澄清。
关于hadoop - hadoop S3n空目录未删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11391717/