hadoop - Hadoop错误:找到接口 org.apache.hadoop.mapreduce.TaskAttemptContext

  显示原文与译文双语对照的内容
0 0

我使用hadoop来设计mapreduce作业。 我决定创建一个自定义时差。 当我想在Hortonworks沙箱上运行作业时,出现了以下错误:

Error: Found interface org.apache.hadoop.mapreduce.TaskAttemptContext, but class was expected

根据论坛( 就像这里的 )的一些主题,它是一个版本问题: 在 Hadoop 2. x, TaskAttemptContext是一个接口之前,它是一个类。

以下是我的pom.xml 文件:

<dependencies>
 <dependency>
 <groupId>junit</groupId>
 <artifactId>junit</artifactId>
 <version>4.4</version>
 </dependency>
 <dependency>
 <groupId>org.apache.hadoop</groupId>
 <artifactId>hadoop-common</artifactId>
 <version>2.2.0</version>
 </dependency>
 <dependency>
 <groupId>org.apache.hadoop</groupId>
 <artifactId>hadoop-core</artifactId>
 <version>1.2.1</version>
 </dependency>
 <dependency>
 <groupId>jdk.tools</groupId>
 <artifactId>jdk.tools</artifactId>
 <version>${java.version}</version>
 <scope>system</scope>
 <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
 </dependency>
 <dependency>
 <groupId>org.apache.mrunit</groupId>
 <artifactId>mrunit</artifactId>
 <version>0.9.0-incubating</version>
 <classifier>hadoop1</classifier>
 </dependency>
</dependencies>

如果你有主意的话,帮助我。

时间:原作者:1个回答

0 0

这可能意味着你在较早版本的Hadoop中编译了代码,而不是运行于。

这可能与它有关。

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

这里有两个不同版本的Hadoop 。

原作者:
...