hadoop noclassdeffounderror尽管有distributedcache设置

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

我在试着摆脱一些 NoClassDefFoundError 由于某些原因 jars 在运行时找不到。所以我把我的 hdfs 系统中有一些lib,我打电话给

  1. String lib = "/path/to/lib";
  2. Path hdfsJar = new Path(lib);
  3. DistributedCache.addFileToClassPath(hdfsJar, conf);

现在,我仍然得到错误。但是,如果我设置 jars$HADOOP_CLASSPATH . 我做错了吗 DistributedCache 打电话?
编辑:

  1. java.lang.RuntimeException: java.lang.NoClassDefFoundError: gov/nih/nlm/nls/metamap/MetaMapApi
  2. at org.apache.hadoop.mapreduce.lib.chain.Chain.joinAllThreads(Chain.java:526)
  3. at org.apache.hadoop.mapreduce.lib.chain.ChainMapper.run(ChainMapper.java:169)
  4. at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:784)
  5. at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
  6. at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163)
  7. at java.security.AccessController.doPrivileged(Native Method)
  8. at javax.security.auth.Subject.doAs(Subject.java:415)
  9. at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)
  10. at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
  11. Caused by: java.lang.NoClassDefFoundError: gov/nih/nlm/nls/metamap/MetaMapApi
  12. at org.avrosation.metamap.ChainMetaProcess$TokenizerMapper.map(ChainMetaProcess.java:25)
  13. at org.avrosation.metamap.ChainMetaProcess$TokenizerMapper.map(ChainMetaProcess.java:16)
  14. at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145)
  15. at org.apache.hadoop.mapreduce.lib.chain.Chain$MapRunner.run(Chain.java:321)
  16. Caused by: java.lang.ClassNotFoundException: gov.nih.nlm.nls.metamap.MetaMapApi
  17. at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
  18. at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
  19. at java.security.AccessController.doPrivileged(Native Method)
  20. at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
  21. at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
  22. at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
  23. at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
eeq64g8w

eeq64g8w1#

尝试提供完全限定的hdfs路径。请尝试以下代码:
确保将jar上传到hdfs(hdfs上的任何位置,我假设是/tmp)。

  1. hadoop fs -copyFromLocal my.jar /tmp

然后编辑java代码,如下所示:

  1. String lib = "hdfs://localhost:9000/tmp/my.jar";
  2. Path hdfsJar = new Path(lib);
  3. DistributedCache.addFileToClassPath(hdfsJar, conf);

本文档详细介绍了分布式缓存:https://hadoop.apache.org/docs/stable/api/org/apache/hadoop/filecache/distributedcache.html

zzzyeukh

zzzyeukh2#

事实上,我从一开始就怀疑我的孩子有问题
ide IntelliJ Idea 14 因为我必须处理一个主要的代码重构,然后使代码揭示问题。首先,我试图清理建筑,但没有成功,然后我只是创建了另一个项目,复制粘贴类和库的导入,这就成功了!

相关问题