java - Hadoop MR 作业 - java.lang.ClassNotFoundException : au. com.bytecode.opencsv.CSVParser

标签 java eclipse hadoop mapreduce opencsv

Oozie 工作流触发 Hadoop MapReduce 作业的 Java 类。我在 Eclipse 项目中添加了 opencsv-2.3.jar 和 commons-lang-3-3.1 jar 依赖项。该项目构建成功,但是当将其移动到 Hadoop 集群上时,即使我的项目包含 jar,我也会收到 ClassNotFoundError。

由于这是一个正在运行的现有遗留系统,我不想更改环境依赖项。因此,我通过将库添加到类路径来尝试不同的组合,但没有成功。

尝试过:java.lang.NoClassDefFoundError: au/com/bytecode/opencsv/CSVReader - Upload File Vaadin

检查了 MR 客户端 maven 依赖项 - org.apache.hadoop:hadoop-mapreduce-client-common:2.6.0-cdh5.4.2。

生产环境中的遗留 jar 运行正常,但我的项目的编译 jar 抛出错误,如下所示:

oozie 系统日志:

INFO [uber-SubtaskRunner] org.apache.hadoop.mapreduce.Job: Running job: job_123213123123_35305
INFO [communication thread] org.apache.hadoop.mapred.TaskAttemptListenerImpl: Progress of TaskAttempt attempt_1548794054671_35304_m_000000_0 is : 1.0
INFO [uber-SubtaskRunner] org.apache.hadoop.mapreduce.Job: Job job_123213123123_35305 running in uber mode : false
INFO [uber-SubtaskRunner] org.apache.hadoop.mapreduce.Job:  map 0% reduce 0%
INFO [uber-SubtaskRunner] org.apache.hadoop.mapreduce.Job: Task Id : attempt_123213123123_35305_m_000001_0, Status : FAILED           

oozie 标准错误:

Error: java.lang.ClassNotFoundException: au.com.bytecode.opencsv.CSVParser
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:142)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:787)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1671)
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)

请建议我是否遗漏了什么以及我可以尝试什么。 enter image description here

最佳答案

opencsv-2.3.jar 库作为外部 jar 从 Eclipse 构建路径添加。我必须使用 mvn clean 并构建它。最后,使用目标文件夹中的“*jar-with-dependency.jar”解决了问题。

关于java - Hadoop MR 作业 - java.lang.ClassNotFoundException : au. com.bytecode.opencsv.CSVParser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55966976/

相关文章:

java - 在 Java case 语句中使用变量

android - 有没有办法在 Android Eclipse 中测试权限?

hadoop - 从 hdfs 到 GreenPlum 的 Sqoop 导出不起作用

eclipse - HTTP 404 错误 : (/SpringMVC/) ressource unavailable

hadoop - 无法在Google云的端口22上连接虚拟机

r - 在rhive.env()上出现错误:无法连接到x.x.x.x上的Rserver

java - Elasticsearch : find all mapping types of a given index using the Java client

java - @Bean 和 @Component 注释是否相同但针对 Spring Framework 中的不同目标?

java - 为 JVM 编译 C 代码或在 JVM 中嵌入 C 运行时

java - 幸运游戏 GUI.. 怎么了?