gpt4 book ai didi

java - 从本地运行到远程时出现 ClassNotFoundException

转载 作者:可可西里 更新时间:2023-11-01 15:52:36 24 4
gpt4 key购买 nike

我有一个 mapreduce 代码在我的本地运行良好。然后当我在远程服务器上运行它时,我得到了这个 execption

Error: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.avro.mapreduce.AvroKeyInputFormat not found
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2195)
at org.apache.hadoop.mapreduce.task.JobContextImpl.getInputFormatClass(JobContextImpl.java:174)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:749)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)

在我的 IntelliJ ide 中,我有一个外部库 avro-mapred-1.7.7-hadoop2.jar,我从中构建了工件。当我解压缩工件的 jar 时,我找到了正确的,并且我在 org.apache.avro.mapreduce 包中正确地找到了 AvroKeyInputFormat .那我在这里错过了什么?我检查了一些 SO 帖子,但没有找到相关答案

最佳答案

  1. 创建一个 far jar 并将所有依赖的 jar 添加到 fat jar 中。

  2. 使用 cli -libjars 在分布式缓存中添加依赖的 jar 或使用 Job.addLibPath() 以编程方式添加 jar。

想法是使所有 jar 可用于 MR 期间调用的远程 JVM。

关于java - 从本地运行到远程时出现 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47618223/

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