Импорт org.apache.hadoop.mapreduce не может быть разрешен

Я пытаюсь выполнить приведенный ниже код

package test;

import java.io.IOException;

import java.util.*;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.conf.*;

import org.apache.hadoop.io.*;

import org.apache.hadoop.util.*;

import org.apache.hadoop.mapreduce.Mapper;

import org.apache.hadoop.mapreduce.Reducer;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.conf.Configured;

import org.apache.hadoop.mapreduce.Job;

import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;



public class Diction {

    public static class WordMapper extends Mapper<Text,Text,Text,Text>
    {
         private Text word = new Text();
            public void map(Text key, Text value, Context context) throws IOException, InterruptedException
            {
                StringTokenizer itr = new StringTokenizer(value.toString(),",");
                while (itr.hasMoreTokens())
                {
                    word.set(itr.nextToken());
                    context.write(key, word);
                }
    }

}
 public static class AllTranslationsReducer

    extends Reducer<Text,Text,Text,Text>
    {
        private Text result = new Text();
        public void reduce(Text key, Iterable<Text> values,
        Context context
        ) throws IOException, InterruptedException
        {
            String translations = "";
            for (Text val : values)
            {
                translations += "|"+val.toString();
            }
            result.set(translations);
            context.write(key, result);
        }
    }
    public static void main(String[] args) throws Exception
    {
        Configuration conf = new Configuration();
        Job job = new Job(conf, "dictionary");
        job.setJarByClass(Dictionary.class);
        job.setMapperClass(WordMapper.class);
        job.setReducerClass(AllTranslationsReducer.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(Text.class);
        job.setInputFormatClass(KeyValueTextInputFormat.class);
        FileInputFormat.addInputPath(job, new Path("/tmp/hadoop-cscarioni/dfs/name/file"));
        FileOutputFormat.setOutputPath(job, new Path("output"));
        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }
}

Но я обнаружил некоторую ошибку «import org.apache.hadoop.mapreduce не может быть разрешен». Я уже добавил файл Hadoop Jar «http://www.java2s.com/Code/Jar/h/Downloadhadoop0210eclipsepluginjar.htm" .

Версия Hadoop-Hadoop 2.0.0-cdh4.2.0

Eclipse-juno Service Release 2 Может ли кто-нибудь помочь мне решить эту проблему.


person Indrajit Swain    schedule 09.02.2014    source источник


Ответы (2)


У вас нет подходящей зависимости. На самом деле у вас есть плагин Eclipse для разработки Hadoop, который полностью отличается от Jar Hadoop.

Взгляните на содержимое hadoop-0.21.0-eclipse-plugin.jar. Видите ли вы какие-либо базовые классы Hadoop?

Проверьте Выпуски Hadoop и добавьте реальную зависимость Hadoop в свой инструмент сборки (Maven, Ant, Gradle .. .).

Что-то вроде того, если вы используете Maven:

<dependency>
  <groupId>org.apache.hadoop</groupId>
  <artifactId>hadoop-client</artifactId>
  <version>2.2.0</version>
</dependency>
person Chiron    schedule 09.02.2014
comment
Да, в моем коде, когда я получаю сообщение об ошибке в каждом операторе импорта import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; импортировать org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; Он показывает мне ту же ошибку, не могли бы вы предложить мне, как я могу решить эту проблему. Используя эту виртуальную машину ранее, я могу выполнять свои коды, но в настоящее время она показывает ошибки. - person Indrajit Swain; 09.02.2014
comment
@IndrajitSwain Да, точно. Потому что у вас нет банок Hadoop в вашем пути к классам. - person Chiron; 09.02.2014
comment
Не могли бы вы объяснить мне, как я могу добавить Jar Hadoop в свой путь к классу, OS-Linux. - person Indrajit Swain; 09.02.2014
comment
Да, на моем локальном компьютере я могу найти папку Hadoop-common, и она содержит все детали. Не могли бы вы объяснить, есть ли какой-либо Jar, который мне нужно добавить через Build Add External Jar - person Indrajit Swain; 09.02.2014
comment
@IndrajitSwain Вам нужен jar-клиент hadoop. Еще раз проверьте мой ответ. И, пожалуйста, сделайте себе одолжение, вы инструмент для сборки. Не полагайтесь на свои возможности сборки IDE. - person Chiron; 09.02.2014
comment
Да, вы правы, файл jar, который я добавил, не содержит основного основного класса Hadoop. :( Но я искал так много файлов jar, и они не решают мою проблему - person Indrajit Swain; 09.02.2014
comment
Отлично, теперь моя проблема решена. Файлы Jar, которые я добавил ранее, не работают должным образом, теперь я добавил правильный файл Jar mvnrepository.com/artifact/org.apache.hadoop/hadoop-common/ ,mvnrepository.com/artifact/org.apache.hadoop/ - person Indrajit Swain; 09.02.2014
comment
@IndrajitSwain Тогда не стесняйтесь отметить мой ответ как «Принято»! (если это поможет вам) - person Chiron; 09.02.2014

Попробуйте включить следующие внешние файлы JAR, загруженные с помощью Hadoop:

  • $HADOOP_HOME/доля/hadoop/mapreduce/hadoop-mapreduce-client-core-2.2.0.jar
  • $HADOOP_HOME/доля/hadoop/mapreduce/hadoop-mapreduce-client-common-2.2.0.jar
  • $HADOOP_HOME/доля/hadoop/common/hadoop-common-2.2.0.jar
person Joan Salvatella    schedule 03.03.2014