我正在数据管道中运行一个emr活动,分析日志文件,当管道失败时,我得到以下错误:
线程“main”org.apache.hadoop.mapred.filealreadyexistsexception中出现异常:输出目录hdfs://10.211.146.177:9000/home/hadoop/temp-output-s3copy-2013-05-24-00已存在于org.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(jobclient。java:905)位于javax.security.auth.subject.doas(subject)的java.security.accesscontroller.doprivileged(本机方法)。java:396)在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)在sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl。java:25)在java.lang.reflect.method.invoke(方法。java:597)在org.apache.hadoop.util.runjar.main(runjar。java:187)
我尝试通过添加以下内容删除该文件夹:
filesystem fs=filesystem.get(getconf());fs.delete(新路径(“path/to/file”),true);//删除文件,对于递归为真
但它不起作用。有没有办法重写java中hadoop的fileoutputformat方法?有没有办法在java中忽略这个错误?
1条答案
按热度按时间dgjrabp21#
当输出目录使用日期进行命名时,要删除的文件的路径会更改。有两种删除方法:
在shell上,尝试以下操作:
要通过java代码执行此操作,请执行以下操作: