Javaアプリケーションからmapreduceジョブを呼び出す必要があります。私はCONFのmapred.job.jobtrackerを設定しない場合 私はjavaアプリケーションからmapreduceジョブを実行しようとしたときにキャッチされた例外
ToolRunner.run(new Validation(), pathsMoveToFinal.toArray(new String[pathsMoveToFinal.size()]));
を使用し、それは永遠のように実行します。マップタスクは100%に変わり、次に他のパーセンテージに戻ります。私はmapred.job.jobtrackerを設定した場合、それはマッパークラスが見つからない文句:
java.lang.RuntimeException: java.lang.ClassNotFoundException: utils.DataValidationExtractorMapper
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:809)
at org.apache.hadoop.mapreduce.JobContext.getMapperClass(JobContext.java:157)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:569)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305)
at org.apache.hadoop.mapred.Child.main(Child.java:170)
Caused by: java.lang.ClassNotFoundException: utils.DataValidationExtractorMapper
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:762)
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:807)
... 4 more
誰も私にいくつかのヒントを与えてくださいでした。ありがとう、良い週末を過ごす。
これはクラスパスの問題です。 Eclipseを使用している場合は、クラスパスにjarファイルを追加する必要があります –
ありがとうございます。私はクラスパスの瓶を持っています。私はWindows Eclipseから試してみると、Validationのrunメソッドに行くことができます。しかし、私はそれをパッケージ化し、Linuxから実行すると、この例外が発生します。 libフォルダにjarファイルがあります。 –
オールインワンのjarをビルドしていない限り、クラスパスを修正する必要があります。 –