【问题标题】:Elastic MapReduce libjars argument to reference s3 jar files用于引用 s3 jar 文件的弹性 MapReduce libjars 参数
【发布时间】:2012-08-20 12:16:49
【问题描述】:

我正在尝试在 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 在 java.lang.Class.forName0(Native Method) 在 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(Native Method) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:190) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:306) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:247) ... 21 更多

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

【问题讨论】:

  • MyMainClass 是否实现了Tool 接口?还要确保在你的运行方法中通过getConf() 获取配置实例。
  • 我没有实现 Tool 接口...在某处有这样的例子吗?我对这个 hadoop 东西有点陌生。
  • 实际上,我找到了一个示例,现在我得到了一个不同的错误,所以我认为它有效。非常感谢!!

标签: java hadoop amazon-s3 mapreduce amazon-emr


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    • 2012-07-15
    相关资源
    最近更新 更多