gpt4 book ai didi

java - 尝试从 Java 应用程序运行 mapreduce 作业时捕获异常

转载 作者:可可西里 更新时间:2023-11-01 16:27:22 26 4
gpt4 key购买 nike

我需要从 java 应用程序调用 mapreduce 作业。我用

ToolRunner.run(new Validation(), pathsMoveToFinal.toArray(new String[pathsMoveToFinal.size()]));

如果我不设置 conf 的 mapred.job.jobtracker,它将永远运行。 map task 变为 100%,然后回到其他百分比。如果我设置 mapred.job.jobtracker,它会提示找不到映射器类:

java.lang.RuntimeException: java.lang.ClassNotFoundException:  utils.DataValidationExtractorMapper
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:809)
at org.apache.hadoop.mapreduce.JobContext.getMapperClass(JobContext.java:157)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:569)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305)
at org.apache.hadoop.mapred.Child.main(Child.java:170)
Caused by: java.lang.ClassNotFoundException: utils.DataValidationExtractorMapper
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:762)
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:807)
... 4 more

谁能给我一些提示。谢谢,祝周末愉快。

最佳答案

由于您使用的是 Maven,我强烈推荐 baking your dependencies statically into your JAR .

发生这种情况的原因是您的 Mapper 和 Reducer JRE 没有预先存在的客户类路径上下文。 Baking in dependencies 是面向 future 的和稳定的,Hadoop 应该非常愉快地使用这个 JAR。

关于java - 尝试从 Java 应用程序运行 mapreduce 作业时捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8949887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com