1

mongodbデータを入力としてhadoopでマップ/リデュースジョブを作成する方法を学んでいます。したがって、この例に従いましたが、次のエラーが発生しました:

 Exception in thread "main" java.lang.NoClassDefFoundError: com/mongodb/hadoop/util/MongoConfigUtil
    at WordCount.main(WordCount.java:58)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.lang.ClassNotFoundException: com.mongodb.hadoop.util.MongoConfigUtil
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 7 more

結果なしで何時間も検索してきました。誰でも私を助けてください。

4

2 に答える 2

1

つまりmongo-hadoop-core.jar、コンパイル時には使用できますが、実行時には使用できません。

クラスパスに追加された依存関係 jar を使用してアプリケーションを実行してみてください

例 :java -cp mongo-hadoop-core.jar<++other dependencies> MainClass

編集1

hadoopシェルを使用して実行している場合

classpath実行して確認するhadoop classpathと、クラスパスにdir / jarが出力されます。

classpath依存するjarがクラスパスにない場合は、それらをusingexportコマンドに追加してから実行しますhadoop jar yourjar.jar mainClass

編集2

libjarsオプションを利用する

hadoop jar myjar.jar mainClass -libjars ${LIBJARS}

于 2016-05-18T03:47:47.460 に答える