3

私の MR ジョブは、MyMapper クラスが見つからないと不平を言うことがあります。そして、私は job.setJarByClass(MyMapper.class); を与えなければなりません。私のjarファイルからロードするように指示します。

cloudera@cloudera-vm:/tmp/translator$ hadoop jar MapReduceJobs.jar translator/input/Portuguese.txt translator/output 13/06/13 03:36:57 WARN mapred.JobClient: ジョブ jar ファイルが設定されていません。ユーザー クラスが見つからない可能性があります。JobConf(Class) または JobConf#setJar(String) を参照してください。13/06/13 03:36:57 INFO input.FileInputFormat: プロセスへの合計入力パス: 1 13/06/13 03:36:57 INFO mapred.JobClient: 実行中のジョブ: job_201305100422_0043 13/06/13 03:36: 58 INFO mapred.JobClient: map 0% reduce 0% 13/06/13 03:37:03 INFO mapred.JobClient: Task Id: attempts_201305100422_0043_m_000000_0, Status: FAILED java.lang.RuntimeException: java.lang.ClassNotFoundException: com.mapreduce .variousformats.keyvaluetextinputformat.MyMapper at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:996) at org.apache.hadoop.mapreduce.JobContext.getMapperClass(JobContext.java:

質問 : なぜ起こるのですか? jar ファイルからロードするように常に指示されないのはなぜですか。この種の問題に取り組むためのベスト プラクティスはありますか。また、サードパーティのライブラリを使用している場合は、それらに対してもこれを行う必要があります。

4

2 に答える 2