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

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

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

  1. public static void main(String[] args)throws Exception {
  2. int res = ToolRunner.run(newConfiguration(), new MapReduce(),args);
  3. System.exit(res);
  4. }
  5. @Override
  6. public int run(String[] args) throwsException {
  7. // Configuration processed by ToolRunner
  8. Configuration conf = getConf();
  9. Job job = new Job (conf, "MapReduce");
  10. ....
  11. }

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

  1. $ 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 .

  1. export HADOOP_CLASSPATH="<extra_entries>:$HADOOP_CLASSPATH"

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

相关问题