1

我创建了一个 .java 文件以在 cloudera hadoop 上运行。要编译它,

   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;

我是否选择了错误的 jar 来执行文件,或者我是否遵循错误的程序来编译 java 文件。请让一些人纠正这个错误。

4

1 回答 1

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上面示例中给出的方法来构建您的示例。

于 2012-05-11T02:04:46.900 回答