-1

ログ ファイルを分析するデータ パイプライン内で EMR アクティビティを実行していますが、パイプラインが失敗すると次のエラーが発生します。

スレッド "main" org.apache.hadoop.mapred.FileAlreadyExistsException での例外: 出力ディレクトリ hdfs://10.211.146.177:9000/home/hadoop/temp-output-s3copy-2013-05-24-00 が組織に既に存在します。 apache.hadoop.mapred.FileOutputFormat.checkOutputSpecs(FileOutputFormat.java:121) org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:944) org.apache.hadoop.mapred.JobClient$2.run( org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation. java:1132) org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:905) org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:879) org.apache.hadoop.mapred .JobClient.runJob(JobClient.java:1316) com.valtira.datapipeline.stream.CloudFrontStreamLogProcessors.main(CloudFrontStreamLogProcessors.java:216) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド) で sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) でorg.apache.hadoop.util.RunJar.main(RunJar.java:187) の java.lang.reflect.Method.invoke(Method.java:597) で .reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)org.apache.hadoop.util.RunJar.main(RunJar.java:187) での Reflect.Method.invoke(Method.java:597)org.apache.hadoop.util.RunJar.main(RunJar.java:187) での Reflect.Method.invoke(Method.java:597)

次を追加して、そのフォルダーを削除しようとしました:

FileSystem fs = FileSystem.get(getConf()); fs.delete(new Path("path/to/file"), true); // ファイルを削除します。再帰の場合は true

しかし、それは機能しません。JavaでHadoopからFileOutputFormatメソッドをオーバーライドする方法はありますか? Javaでこのエラーを無視する方法はありますか?

4

1 に答える 1