我试图在 Hadoop 中运行示例程序here http://hadoop.apache.org/common/docs/r0.20.2/mapred_tutorial.html#Example%3A+WordCount+v1.0
当我尝试运行它时,我得到一个 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。当我用谷歌搜索时,我发现这样做是为了防止重复执行相同的任务。但就我而言,是输入文件导致了异常。
我的命令有什么问题吗,因为我没有看到任何关于字数问题有相同错误的帖子。
我是java新手。
这可能是什么原因?
我遇到了同样的问题。我花了一段时间才弄清楚发生了什么事。主要问题是您无法附加调试器来找出正在传递的值。
您在代码中使用 args[0] 作为输入,使用 args[1] 作为输出文件夹。
现在,如果您使用新框架,在 Tool 类的 run 方法中使用命令行,则 args[0] 是正在执行的程序的名称,在本例中为 WordCount。
args[1] 是您指定的输入文件夹的名称,该文件夹由程序映射到输出文件夹,因此您会看到异常。
所以解决办法是:
使用 args[1] 和 args[2]。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)