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

时间:2014-05-08 15:26:54

标签: hadoop map reduce

我使用hadoop设计mapreduce工作。我决定创建一个自定义的InputFormat。 当我想在Hortonworks Sandbox上运行作业时,我收到了这个错误:

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

根据论坛上的一些主题(如here),这是一个版本问题:在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 :(得分:4)

这可能意味着您针对的是早期版本的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。