无法使用Hadoop 3.0.0-alpha2

时间:2017-04-12 05:24:34

标签: java hadoop

我是Hadoop的初学者。我正在研究Apache给出的WordCountV2。

当我尝试使用method addCacheFile not found in class Job

时,我的IDE显示Job.addCacheFile(new Path(remainingArgs[++i]).toUri());

我用Google搜索了一下,this是我能找到的唯一一个但是没有解决方案。

我不确定为什么会这样(getCacheFiles对我很有用)。我想这与我如何设置环境有关? (不幸的是Java新手。)

我正在使用Eclipse + Maven,pom.xml设置为:

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-hdfs</artifactId>
    <version>3.0.0-alpha2</version>
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-auth</artifactId>
    <version>3.0.0-alpha2</version>
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-common</artifactId>
    <version>3.0.0-alpha2</version>
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-mapreduce-client-core</artifactId>
    <version>3.0.0-alpha2</version>
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-mapreduce-client-common</artifactId>
    <version>3.0.0-alpha2</version>
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-core</artifactId>
    <version>2.6.0-mr1-cdh5.10.1</version>
</dependency>

我可以问一下这个错误是否可能是由我的设置造成的,如果不是,那可能是什么原因?

非常感谢。

1 个答案:

答案 0 :(得分:0)

我能够重现你所尝试的并且没有遇到任何问题。我正在使用MRv2。

从pom看,你似乎在使用MR2(这是最新的)。因此,删除MR1依赖项(hadoop-core 2.6.0-mr1-cdh5.10.1)。 MRv2不需要hadoop核心罐。

我用过的代码。如果您使用的是MRv2,这应该可以使用。

import java.io.IOException;
import java.net.URISyntaxException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.mapreduce.Job;


public class App 
{
    public static void main( String[] args ) throws IOException, InterruptedException, URISyntaxException
    {
        Configuration conf = new Configuration();

        Job job = Job.getInstance(conf);

        job.addCacheFile(new Path("").toUri());
    }
}

但是如果你想使用MRv1,那么我们需要更改POM,然后我们需要使用

    Configuration conf = new Configuration();

    DistributedCache.addFileToClassPath(new Path("<path to file>"), conf);

    Job job = new Job(conf);