web-dev-qa-db-ja.com

Hadoopからファイル/フォルダーを削除する

ログファイルを分析するデータパイプライン内で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からそのフォルダーを削除するにはどうすればよいですか?

17

AWSサポートに連絡しましたが、問題は分析しているログファイルが非常に大きく、メモリに問題があることでした。 EMRClusterセクションでパイプライン定義「masterInstanceType」に「m1.xlarge」を追加し、機能しました。

1

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 
50
greedybuddha

Hdfsからファイルを削除するには、以下のコマンドを使用できます。

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

Hdfsからフォルダーを削除するには、以下のコマンドを使用できます。

hadoop fs -rm -r -skipTrash /folder_name

-skipTrashオプションを使用する必要があります。そうしないと、エラーが表示されます。

15
Udit Solanki

Scalaの場合:

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

scはSparkContextです

7
Josiah Yoder

Hdfsからファイルを削除するには、次のコマンドを使用します:hadoop fs -rm -r /FolderName

2
Kishore Bhosale

コマンドラインから:

 hadoop fs -rm -r /folder
1
grokster

Hadoop 2.6.0を使用します。コマンドライン「hadoop fs -rm -r fileName.hib」は、hdfsファイルシステムのhibファイルを削除するのに正常に機能します。

0
Ahmed Dib