引用s3 jar文件的Elastic MapReduce libjars参数



我正试图在亚马逊上运行一个自定义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/locene/analysis/Analyzer位于java.lang.Class.forName0(本机方法)java.lang.Class.forName(Class.java:247)位于org.apache.hadop.conf.Configuration.getClassByName(Configuration.java:861)在org.apache.hadop.conf.Configuration.getClass(Configuration.java:906)在org.apache.hadop.conf.Configuration.getClass(Configuration.java:932)网址:org.apache.hadop.mapred.JobConf.getMapperClass(JobConf.java:959)网址:org.apache.hadop.mapred.MapRunner.configure(MapRunner.java:34)…还有14个原因:java.lang.ClassNotFoundException:org.apache.locene.analysisAnalyzerjava.net.URLClassLoader$1.run(URLClassLoader.java:202)位于的java.security.AccessController.doPrivileged(本机方法)java.net.URLClassLoader.findClass(URLClassLoader.java:190)java.lang.ClassLoader.loadClass(ClassLoader.java:306)sun.mic.Launcher$AppClassLoader.loadClass(Launcher.java:301)java.lang.ClassLoader.loadClass(ClassLoader.java:247)。。。再增加21个

它似乎找不到lucene jar文件。。。我错过了什么?

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

最新更新