运行hadoop jar命令时出现jSonOject错误

时间:2015-04-02 02:26:10

标签: java json hadoop mapreduce

运行hadoop jar命令时出现jSonOject错误

    ERROR="Error: java\.lang\.ClassNotFoundException: org\.json\.JSONObject

    15/04/01 18:44:17 INFO mapred.JobClient: Task Id :        attempt_201410201117_0915_m_000000_0, Status : FAILED
    Error: java.lang.ClassNotFoundException: org.json.JSONObject
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at 

我已经通过以下方式编译了Java类:

$ /usr/bin/javac -cp /opt/cloudera/parcels/CDH-4.7.0
-1.cdh4.7.0.p0.40/lib/*:/opt/cloudera/parcels/CDH-4.7.0
-1.cdh4.7.0.p0.40/lib/hadoop/client-0.20/*:/opt/cloudera
/parcels/CDH-4.7.0-1.cdh4.7.0.p0.40/lib/hadoop/*:/opt/cloudera/parcels/CDH-  4.7.0
-1.cdh4.7.0.p0.40/lib/org.json.jar/:/opt/cloudera/parcels/
CDH-4.7.0-1.cdh4.7.0.p0.40/lib/java-json.jar /var/lib/hadoophdfs/xxx
/multipleOutJsonEx/PartitionByMultipleOutputs.java

甚至用json jar文件运行hadoop jar命令:

hadoop jar /var/lib/hadoop-hdfs/xxx/jarFiles/multipleoutputs.jar
PartitionByMultipleOutputs -libjars 
/opt/cloudera/parcels/CDH-4.7.0-1.cdh4.7.0.p0.40/lib/java-json.jar 
/user/xxx/multipleOutTest/json_input.txt /user/nchalasani/output

所以不确定为什么我仍然会收到错误:

1 个答案:

答案 0 :(得分:0)

基本上下载了json-20140107.jar并将其解压缩到工作文件夹

jar -xvf json-20140107.jar

一旦我这样做了。我编译了java程序。我甚至没有提到类路径中的jsonJar文件。

创建JAR并执行它。

关键是提取创建org目录的json jar文件,并创建一个包含类和jsonJar的全新jar文件。