hadoop - hadoop S3n空目录未删除

标签 hadoop amazon-s3

我正在使用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/

相关文章:

java - 使用mapreduce处理hadoop中的压缩xml文件

sql - Hadoop配置单元查询

java - 多输出路径(Java - Hadoop - MapReduce)

amazon-s3 - 有没有办法让 ffmpeg 将流内容连续输出到 s3?

django - 从 S3 wagtail 提供静态和媒体文件

amazon-s3 - 尝试使用 Pyspark 访问 AWS S3 时出错

hadoop - 如何更新 HDFS 中的文件

hadoop - Hive 支持过滤 Unicode 数据

ios - 将文件上传到 s3,然后将 URL 存储在 Firebase 中 - Swift 2.2

amazon-web-services - 在 CloudFront 中即时调整图像大小并立即将它们放入相同的 URL : AWS CloudFront -> S3 -> Lambda -> CloudFront