0

我在启动 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
4

2 回答 2

0

IncomaptibleClassChangeError您的代码针对一个 Hadoop 版本编译并针对不同版本运行时,几乎总是会导致这种情况。

请检查以确保您针对与您正在运行的版本相同的 Hadoop 版本编译您的代码。

于 2013-10-14T17:58:24.627 回答
0

如果您使用的是 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 视为接口而不是类。所以我们不能创建 Counter 的对象。

于 2015-06-15T22:49:29.143 回答