cdh4-异常:java.lang.CompatibleClassChangeError:

dz6r00yl  于 2021-06-25  发布在  Pig
关注(0)|答案(2)|浏览(243)

当我启动一个pig脚本时,我遇到了一个java问题,它似乎是一些依赖项或版本冲突,运行debian/cloudera cdh4/apache pig

java.lang.Exception: java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.Counter, but class was expected

at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:406)
Caused by: java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.Counter, but class was expected
mwecs4sa

mwecs4sa1#

如果您使用的是maven,则需要在pom文件中进行更改。
之前我使用了以下依赖项:

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-core</artifactId>
    <version>1.2.1</version>
</dependency>

当我把它改成:

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-client</artifactId>
    <version>2.5.2</version>
</dependency>

我想这可能有用。据我所知,原因是hadoop的更高版本将counter视为接口而不是类。所以我们不能创建计数器的对象。

wixjitnu

wixjitnu2#

这个 IncomaptibleClassChangeError 当您的代码是针对一个版本的hadoop编译的,并且是针对另一个版本运行时,几乎总是会产生这种情况。
请检查以确保编译的代码与运行的hadoop版本相同。

相关问题