hadoop-error:找到接口org.apache.hadoop.mapreduce.taskattemptcontext

rvpgvaaj  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(776)

我正在使用hadoop设计mapreduce作业。我决定创建一个自定义输入格式。当我想在hortonworks沙盒上运行作业时,出现以下错误:

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

根据论坛上的一些主题(比如这里),这是一个版本问题:在hadoop2.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>

如果你有主意,谢谢你帮我。

sh7euo9m

sh7euo9m1#

这可能意味着您编译的代码所使用的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。

相关问题