java - 如何在hadoop 0.23.0 MR2上运行和编译java程序

标签 java hadoop javac

我创建了一个 .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 文件。请让一些人纠正这个错误。

最佳答案

上述大多数错误都与无法找到 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 构建您的示例。

关于java - 如何在hadoop 0.23.0 MR2上运行和编译java程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10530466/

相关文章:

java - 如何使Hadoop reducer 为单个键输出多个值

java - 错误 : "Class names are only accepted if annotation processing is explicitly requested"

java编译问题。大概很简单

java - Java 编译器会优化对最终静态变量的方法调用吗?当它变成 dalvik 代码时会发生什么?

java - JUnit 测试错误 未找到测试

java - 使用双数组和用户输入查找数组的最小值/最大值

java - 在 UNIX 中替换换行符

hadoop - HDFS 小文件

java - 如何从 Dual Sim Android 设备获取 Sim 运营商名称?

java - 借助log4j输出hadoop程序的变量