2012-05-10 43 views
1

我创建了一个可以在cloudera hadoop上运行的.java文件。编译它,如何在hadoop 0.23.0上运行和编译java程序MR2

javac -classpath $HADOOP_COMMON_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client- core-3.0.0-SNAPSHOT.jar -d multifetch_classes MultiFetch.java 

错误:

MultiFetch.java:12: package org.apache.hadoop.conf does not exist 
import org.apache.hadoop.conf.Configuration; 
         ^
MultiFetch.java:13: package org.apache.hadoop.conf does not exist 
import org.apache.hadoop.conf.Configured; 
         ^
MultiFetch.java:14: package org.apache.hadoop.fs does not exist 
import org.apache.hadoop.fs.Path; 
        ^
MultiFetch.java:15: package org.apache.hadoop.io does not exist 
import org.apache.hadoop.io.Text; 

我是选错罐子执行文件或正在以下错误的程序编译Java文件我。请让一些更正这个错误。

+0

看起来你在'hadoop-mapreduce-client-'和'core-'之间'-classpath'参数的路径中有一个空格。 –

回答

1

以上大多数错误都与无法找到Hadoop库来编译示例应用程序有关。

样本基于Java的Map/Reduce样本构建命令如下:

$javac \ 
-classpath ${HADOOP_HOME}/hadoop-${HADOOP_VERSION}-core.jar \ 
-d wordcount_classes \ 
WordCount.java 

在我的情况下,jar文件是hadoop-0.20.203.1-SNAPSHOT-core.jar。如果你在你的命令看一看,你会看到有不对的东西:

javac -classpath $HADOOP_COMMON_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client- core-3.0.0-SNAPSHOT.jar -d multifetch_classes MultiFetch.java 

你可以做的是,你可以建立你只是使用classpath作为样品给上面的示例。