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

时间:2012-11-21 23:32:25

标签: hadoop

我的地图reduce程序需要外部jar文件。我正在使用 “-libjars”选项提供那些外部jar文件 -

我使用了hadoop提供的Tool,Configured和ToolRunner Utilities。

  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:   attempt_201211211620_0001_m_000000_1,状态:FAILED错误:   抛出java.lang.ClassNotFoundException:   org.joda.time.format.DateTimeFormatterBuilder

我一直试图解决它。到目前为止似乎没有任何工作。我正在使用CDH 4.1.1。

2 个答案:

答案 0 :(得分:1)

似乎找不到JodaTime。打开/etc/hbase/hbase-env.sh并将额外的jar添加到HADOOP_CLASSPATH

export HADOOP_CLASSPATH="<extra_entries>:$HADOOP_CLASSPATH"

另一个效率较低且有时不太可能的想法是将您所请求的jar复制到/usr/share/hadoop/lib

答案 1 :(得分:0)

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