我正在尝试使用Java删除HDFS文件。由于我的文件大小大于已配置的垃圾箱限制,因此我无法执行删除操作。以下是用于文件删除的代码段。我知道HDFS Shell命令中有skipTrash选项。请让我知道Java中是否有类似的东西,在删除文件时会通过Trash。
导入org.apache.hadoop.fs。*;
hdfs.delete(output,true);
答案 0 :(得分:1)
我知道这有点晚了,但可能会对其他人有所帮助。
我试图弄清楚这件事,在文档或其他任何地方都不容易找到答案。基本上,如果您使用提供的代码(为清楚起见,将填写该代码),我相信会跳过垃圾桶,而只是从HDFS中删除文件(在此特定示例中是递归的)。
import org.apache.hadoop.fs.FileSystem;
FileSystem hdfs = FileSystem.get(config);
boolean recursive = true;
hdfs.delete(pathToFiles, recursive);
如果要将文件移到垃圾箱,似乎必须在删除文件之前这样做。为此,您将需要执行以下操作:
import org.apache.hadoop.fs.Trash;
import org.apache.hadoop.fs.FileSystem;
FileSystem hdfs = FileSystem.get(config);
boolean skipTrash = false;
if (!skipTrash) {
Trash trashTmp = new Trash(hdfs, configuration);
trashTmp.moveToTrash(pathToFiles);
}
hdfs.delete(pathToFiles, recursive);
记住要处理此操作可能引发的IOException。
我在JavaSED上找到了这个示例(来源,示例,讨论):http://www.javased.com/index.php?api=org.apache.hadoop.fs.Trash。还有更多示例说明“废纸rash”和“删除”的用法,请查看。