【问题标题】:CDH4 - Exception: java.lang.IncompatibleClassChangeError:CDH4 - 异常:java.lang.IncompatibleClassChangeError:
【发布时间】:2013-10-09 23:00:13
【问题描述】:

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

【问题讨论】:

    标签: java apache-pig cloudera


    【解决方案1】:

    IncomaptibleClassChangeError 几乎总是在您的代码针对一个 Hadoop 版本编译并针对不同版本运行时引起。

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

    【讨论】:

      【解决方案2】:

      如果您使用的是 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 的对象。

      【讨论】:

        猜你喜欢
        • 2020-09-23
        • 2017-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-29
        • 1970-01-01
        • 1970-01-01
        • 2011-11-24
        相关资源
        最近更新 更多