0

我正在尝试在 Amazon 上运行自定义 jar EMR 作业,并且在我的 jar 文件中引用了 lucene jar 文件。我在 s3 的 lib 目录中有 jar 文件,我的 Jar 参数如下所示:

MyMainClass -libjars s3n://mybucket/lib/lucene-core-3.6.1.jar s3n://mybucket/myinput s3n://mybucket/myoutput

作业失败,我不断收到以下错误:

java.lang.NoClassDefFoundError: org/apache/lucene/analysis/Analyzer at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:247) at org.apache.hadoop.conf .Configuration.getClassByName(Configuration.java:861) 在 org.apache.hadoop.conf.Configuration.getClass(Configuration.java:906) 在 org.apache.hadoop.conf.Configuration.getClass(Configuration.java:932) 在org.apache.hadoop.mapred.JobConf.getMapperClass(JobConf.java:959) at org.apache.hadoop.mapred.MapRunner.configure(MapRunner.java:34) ... 14 更多原因:java.lang.ClassNotFoundException : org.apache.lucene.analysis.Analyzer at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java :190) 在 java.lang。ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) ... 21 更多

它似乎没有找到 lucene jar 文件......我错过了什么?

4

1 回答 1

1

如果您的 runner 类实现了 Tool 接口,那么 Hadoop 将GenericOptionsParser在后台调用,它会-libjars自动获取您的参数。

于 2012-08-28T10:12:38.397 回答