【问题标题】:Deleting file from HDFS bypassing Trash using Java API使用 Java API 绕过垃圾箱从 HDFS 中删除文件
【发布时间】:2018-08-10 05:12:09
【问题描述】:

我正在尝试使用 Java 删除 HDFS 文件。由于我的文件大小大于配置的垃圾箱限制,我无法执行删除操作。下面是用于文件删除的代码sn-p。我知道 HDFS shell 命令中有 skipTrash 选项可用。请让我知道 Java 中是否有类似的东西可以在删除文件时绕过垃圾箱。

import org.apache.hadoop.fs.*;

hdfs.delete(output, true);

【问题讨论】:

    标签: java hadoop hdfs bigdata


    【解决方案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。有更多例子展示了垃圾箱和删除的用法,请查看。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多