如何在使用hadoop时解决noclassdeffounderror?

mzmfm0qo  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(480)

我要走了
线程“main”java.lang.noclassdeffounderror中出现异常:com/linkedin/camus/etl/ietlkey。
运行命令时:

hadoop jar camus-etl-kafka-0.1.0-SNAPSHOT.jar 
com.linkedin.camus.etl.kafka.CamusJob -P camus.properties

我得到以下例外情况。。

2016-04-27 11:34:04.622 java[13567:351959] Unable to load realm mapping info from SCDynamicStore
[NativeCodeLoader] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Exception in thread "main" java.lang.NoClassDefFoundError: com/linkedin/camus/etl/IEtlKey
    at com.linkedin.camus.etl.kafka.CamusJob.run(CamusJob.java:252)
    at com.linkedin.camus.etl.kafka.CamusJob.run(CamusJob.java:235)
    at com.linkedin.camus.etl.kafka.CamusJob.run(CamusJob.java:691)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
    at com.linkedin.camus.etl.kafka.CamusJob.main(CamusJob.java:646)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.lang.ClassNotFoundException: com.linkedin.camus.etl.IEtlKey

我已经包括了 camus-example-0.1.0-SNAPSHOT-shaded.jar 在类路径中。
如果我遗漏了什么,请告诉我。
提前谢谢
苏米亚Git

eqfvzcg8

eqfvzcg81#

你应该尽量包括 camus-api 你可以在这个linkedin的上一代kafka到hdfs管道页面上找到,因为缺少的类包含在这个包中,你可以在这里看到。
注意camu可能需要的其他可传递依赖项。
另外,要确保在使用 hadoop jar 在命令行中,可以添加 libjars 命令行选项,如在hadoop中使用libjars选项中所述:

$ export LIBJARS=/path/jar1,/path/jar2
$ hadoop jar my-example.jar com.example.MyTool -libjars ${LIBJARS} -mytoolopt value

知道加缪将被戈布林取代可能很有用:
加缪正在被淘汰,取而代之的是戈布林。对于那些使用或感兴趣的加缪,我们建议采取在戈布林看看。
有关从camus迁移到gobblin的说明,请查看camus gobblin迁移。

相关问题