我试图在给定here的Hadoop中运行示例程序
当我尝试运行它时,我得到了一个org.apache.hadoop.mapred.FileAlreadyExistsException
emil@psycho-O:~/project/hadoop-0.20.2$ bin/hadoop jar jar_files/wordcount.jar org.myorg.WordCount jar_files/wordcount/input jar_files/wordcount/output
11/02/06 14:54:23 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=
11/02/06 14:54:23 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
Exception in thread "main" org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory file:/home/emil/project/hadoop-0.20.2/jar_files/wordcount/input already exists
at org.apache.hadoop.mapred.FileOutputFormat.checkOutputSpecs(FileOutputFormat.java:111)
at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:772)
at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:730)
at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1249)
at org.myorg.WordCount.main(WordCount.java:55)
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:156)
emil@psycho-O:~/project/hadoop-0.20.2$ 我从/home/emil/project/hadoop-0.20.2/jar_files/wordcount/input获取我的输入文件file01和file02。当我在谷歌上搜索时,我发现这样做是为了防止重复执行相同的任务。但在我的例子中,是输入文件导致了异常。我的命令有什么问题吗,因为我没有看到任何帖子在单词计数问题上有相同的错误。我是一个爪哇新手。
这可能是什么原因?
发布于 2011-10-05 11:28:27
我也面临着同样的问题。我花了一段时间才弄明白到底是怎么回事。主要问题是您无法附加调试器来找出传递的值。
您在代码中使用args作为输入,使用args1作为输出文件夹。
现在,如果您正在使用一个新的框架,其中您正在使用Tool类的run方法中的命令行,则args是正在执行的程序的名称,在本例中为WordCount。
args1是您指定的输入文件夹的名称,它被程序映射到输出文件夹中,因此您会看到异常。
因此,解决方案是:
使用args1和args2。
发布于 2011-02-06 20:21:06
如果作业运行一次,则必须删除指定的输出目录。
这个应该是给你的。
bin/hadoop fs -rmr jar_files/wordcount/output编辑
我误解了创建者,以为它是关于hadoop的示例jar中的worcount示例。你能在你的类中提供源码吗?org.myorg.WordCount
发布于 2013-02-06 04:19:16
我刚刚遇到了这个问题,我发现我必须像Sandeep和Thomas所说的那样:在示例代码中使用args1和args2,并确保输出目录不存在,不管示例中说了什么。
https://stackoverflow.com/questions/4913212
复制相似问题