我有一个hadoop应用程序。我编写了一个需要org.json.jar包以及hadoop-core.jar的java程序。我使用以下linux命令编译此源文件。
mkdir q3_classes
javac -classpath ${HADOOP_HOME}/hadoop-core.jar:${HADOOP_HOME}/org.json-20120521.jar -d q3_classes ETLQ3.java
jar -cvf q3.jar -C q3_classes/ .
它成功编译。但是当我使用以下命令运行此程序时。 (相同的命令成功应用于WordCount示例。)
hadoop jar q3.jar MainClassName /input /output
抛出ClassNotFound异常。找不到org.json.object类。
所以我想知道我的编译命令有什么问题吗?如何使用这两个jar包编译java源文件?
答案 0 :(得分:0)
我猜你的类路径上没有JAR。将它们添加到类路径中。
答案 1 :(得分:0)
您可能需要将org.json-20120521.jar
jar发送到群集的所有节点。尝试使用--libjars选项
hadoop jar q3.jar MainClassName / input / output --libJars org.json-20120521.jar
确保按照here in the edit part说明如何实际编写MapReduce应用程序。