Java 弹性MapReduce libjars参数引用s3 jar文件

Java 弹性MapReduce libjars参数引用s3 jar文件,java,hadoop,amazon-s3,mapreduce,amazon-emr,Java,Hadoop,Amazon S3,Mapreduce,Amazon Emr,我试图在Amazon上运行一个定制的jar EMR作业,我的jar文件中有一个对lucene jar文件的引用。我将jar文件放在s3的lib目录中,我的jar参数如下所示: MyMainClass -libjars s3n://mybucket/lib/lucene-core-3.6.1.jar s3n://mybucket/myinput s3n://mybucket/myoutput 作业失败,我不断收到以下错误: java.lang.NoClassDefFoundError:org/a

我试图在Amazon上运行一个定制的jar EMR作业,我的jar文件中有一个对lucene jar文件的引用。我将jar文件放在s3的lib目录中,我的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 位于java.lang.Class.forName0(本机方法) java.lang.Class.forName(Class.java:247)位于 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) 位于org.apache.hadoop.mapred.MapRunner.configure(MapRunner.java:34) ... 14其他原因:java.lang.ClassNotFoundException: org.apache.lucene.analysis.Analyzer位于 java.net.URLClassLoader$1.run(URLClassLoader.java:202)位于 java.security.AccessController.doPrivileged(本机方法)位于 java.net.URLClassLoader.findClass(URLClassLoader.java:190)位于 loadClass(ClassLoader.java:306)位于 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)位于 loadClass(ClassLoader.java:247)。。。还有21个


似乎找不到lucene jar文件。。。我缺少什么?

如果您的runner类实现了工具接口,那么Hadoop将在后台调用
GenericOptions Parser
,它将自动提取您的
-libjars
参数。

MyMainClass是否实现了
工具
接口?还要确保通过run方法中的
getConf()
获取配置实例。。。有这样的例子吗?我对hadoop有些陌生。事实上,我发现了一个例子,现在我得到了一个不同的错误,所以我认为它是有效的。非常感谢!!