从Hadoop中删除文件/文件夹

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (147)

我正在数据管道中运行一个EMR活动,分析日志文件,当管道失效:

Exception in thread "main" org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://10.208.42.127:9000/home/hadoop/temp-output-s3copy already exists
    at org.apache.hadoop.mapred.FileOutputFormat.checkOutputSpecs(FileOutputFormat.java:121)
    at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:944)
    at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:905)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:396)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1132)
    at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:905)
    at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:879)
    at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1316)
    at com.valtira.datapipeline.stream.CloudFrontStreamLogProcessors.main(CloudFrontStreamLogProcessors.java:216)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:187)

如何从Hadoop中删除该文件夹?

提问于
用户回答回答于

要从HDFS中删除文件,可以使用以下命令:

hadoop fs -rm -r -skipTrash /path_to_file/file_name

要从HDFS中删除文件夹,可以使用以下命令:

hadoop fs -rm -r -skipTrash /folder_name

需要使用-skipTrash选项,否则会提示错误。

用户回答回答于

当说从Hadoop中删除时,实际上是指从HDFS中删除。

要从HDFS中删除某些内容,请执行以下两项操作之一

从命令行:

  • 被反对的方式:

hadoop dfs -rmr hdfs://path/to/file

  • 新方法(使用Hadoop 2.4.1):

hdfs dfs -rm -r hdfs://path/to/file

或来自java:

FileSystem fs = FileSystem.get(getConf());
fs.delete(new Path("path/to/file"), true); // delete file, true for recursive 

扫码关注云+社区

领取腾讯云代金券