mapreduce:使用libjars选项传递外部jar文件不起作用

ryevplcw  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(319)

我的map reduce程序需要外部jar文件。我使用“-libjars”选项来提供这些外部jar文件-
我使用了hadoop提供的tool、configured和toolrunner实用程序。

public static void main(String[] args)throws Exception {
         int res = ToolRunner.run(newConfiguration(), new MapReduce(),args);
         System.exit(res);
  }

  @Override
  public int run(String[] args) throwsException {
         // Configuration processed by ToolRunner
   Configuration conf = getConf();
   Job job = new Job (conf, "MapReduce");
   ....
   }

当我试着执行任务的时候-

$ Hadoop jar myjob.jar jobClassName -libjars external.jar

它引发了以下异常。
12/11/21 16:26:02 info mapred.jobclient:任务id:尝试\u 20121121620 \u 0001 \u m \u000000 \u 1,状态:失败错误:java.lang.classnotfoundexception:org.joda.time.format.datetimeformatterbuilder
我已经试着解决了一段时间了。到目前为止似乎什么都没用。我正在使用cdh 4.1.1。

hmtdttj4

hmtdttj41#

尝试使用external.jar的完全限定绝对文件名调用命令。还要确认缺少的类及其所有必备类都在external.jar中。

sf6xfgos

sf6xfgos2#

似乎找不到工作时间。打开 /etc/hbase/hbase-env.sh 把你多余的jar加到 HADOOP_CLASSPATH .

export HADOOP_CLASSPATH="<extra_entries>:$HADOOP_CLASSPATH"

另一个效率较低、有时不可能的想法是将所需的jar复制到 /usr/share/hadoop/lib .

相关问题