17

我正在分析日志文件的数据管道内运行 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 中删除该文件夹?

4

7 回答 7

52

当您说从 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 
于 2013-05-28T17:01:50.630 回答
15

要从 hdfs 中删除文件,您可以使用以下给定命令:

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

要从 hdfs 中删除文件夹,您可以使用以下给定命令:

hadoop fs -rm -r -skipTrash /folder_name

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

于 2015-07-04T10:31:40.477 回答
7

使用 Scala:

val fs:FileSystem = FileSystem.get(new URI(filePath), sc.hadoopConfiguration);
fs.delete(new Path(filePath), true) // true for recursive

sc 是 SparkContext

于 2015-07-27T16:15:13.940 回答
2

要从 hdfs 中删除文件,请使用以下命令: hadoop fs -rm -r /FolderName

于 2015-05-11T12:32:18.570 回答
1

我联系了 AWS 支持,问题似乎在于我正在分析的日志文件非常大,这造成了内存问题。我在 EMRCluster 部分中添加了我的管道定义“masterInstanceType”:“m1.xlarge”,它起作用了。

于 2013-05-30T19:56:22.873 回答
1

从命令行:

 hadoop fs -rm -r /folder
于 2014-05-12T19:15:21.897 回答
0

我使用hadoop 2.6.0,命令行'hadoop fs -rm -r fileName.hib'可以很好地删除我的hdfs文件sys上的任何hib文件

于 2015-08-10T20:54:44.910 回答