我正在尝试用java删除hdfs文件。由于我的文件大小大于垃圾箱限制配置,我无法执行删除操作。下面是用于删除文件的代码段。我知道hdfsshell命令中有skiptrash选项。请让我知道,如果任何类似的是在java中,将绕过垃圾删除文件。
import org.apache.hadoop.fs.*; hdfs.delete(output, true);
cvxl0en21#
我知道有点晚了,但可能会帮助别人。我试图弄清楚这一点,但在文档或其他任何地方都不容易找到答案。基本上,如果您使用您提供的代码(为了清楚起见,我将填写这些代码),我相信垃圾将被跳过,文件将从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. 有更多的例子显示了垃圾和删除的使用,所以看看吧。
1条答案
按热度按时间cvxl0en21#
我知道有点晚了,但可能会帮助别人。
我试图弄清楚这一点,但在文档或其他任何地方都不容易找到答案。基本上,如果您使用您提供的代码(为了清楚起见,我将填写这些代码),我相信垃圾将被跳过,文件将从hdfs中简单地删除(在这个特定的示例中是递归的)。
如果你想把文件移到垃圾桶里,似乎你必须在删除之前这样做。为此,您需要这样做:
请记住处理此操作可能引发的ioexception。
我在javased上找到了这个示例(源代码、示例、讨论):http://www.javased.com/index.php?api=org.apache.hadoop.fs.trash. 有更多的例子显示了垃圾和删除的使用,所以看看吧。