2013-03-14 3 views
2

Я попробовал этот код:Показаны ошибки при запуске WordCount.java

javac -verbose -classpath /var/root/hadoop-1.0.4/hadoop-1.0.4-core.jar WordCount.java -d /Users/amrita/desktop/hadoop/javatrail/wordcount_classes 

Я просто получаю следующее сообщение об ошибке:

parsing started WordCount.java] 
[parsing completed 12ms] 
[search path for source files: /var/root/hadoop-1.0.4/hadoop-1.0.4-core.jar] 
[search path for class files: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jsfd.jar,/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar,/System/Library/Frameworks/JavaVM.framework/Frameworks/JavaRuntimeSupport.framework/Resources/Java/JavaRuntimeSupport.jar,/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/ui.jar,/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/laf.jar,/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/sunrsasign.jar,/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jsse.jar,/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jce.jar,/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/charsets.jar,/Library/Java/Extensions/RXTXcomm.jar,/System/Library/Java/Extensions/AppleScriptEngine.jar,/System/Library/Java/Extensions/dns_sd.jar,/System/Library/Java/Extensions/j3daudio.jar,/System/Library/Java/Extensions/j3dcore.jar,/System/Library/Java/Extensions/j3dutils.jar,/System/Library/Java/Extensions/jai_codec.jar,/System/Library/Java/Extensions/jai_core.jar,/System/Library/Java/Extensions/mlibwrapper_jai.jar,/System/Library/Java/Extensions/MRJToolkit.jar,/System/Library/Java/Extensions/QTJava.zip,/System/Library/Java/Extensions/vecmath.jar,/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/apple_provider.jar,/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/dnsns.jar,/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/localedata.jar,/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/sunjce_provider.jar,/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/sunpkcs11.jar,/var/root/hadoop-1.0.4/hadoop-1.0.4-core.jar] 
[loading java/io/IOException.class(java/io:IOException.class)] 
WordCount.java:5: package org.apache.hadoop.fs does not exist 
import org.apache.hadoop.fs.Path; 
         ^
WordCount.java:6: package org.apache.hadoop.conf does not exist 
import org.apache.hadoop.conf.*; 
^ 
WordCount.java:7: package org.apache.hadoop.io does not exist 
import org.apache.hadoop.io.*; 
^ 
WordCount.java:8: package org.apache.hadoop.mapred does not exist 
import org.apache.hadoop.mapred.*; 
^ 
WordCount.java:9: package org.apache.hadoop.util does not exist 
import org.apache.hadoop.util.*; 
^ 
[loading java/lang/Object.class(java/lang:Object.class)] 
[loading java/lang/String.class(java/lang:String.class)] 
[loading java/lang/Exception.class(java/lang:Exception.class)] 
WordCount.java:11: cannot find symbol 
symbol : class MapReduceBase 
location: class org.myorg.WordCount 
    public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { 
            ^
WordCount.java:11: cannot find symbol 
symbol : class Mapper 
location: class org.myorg.WordCount 
    public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { 
                  ^
WordCount.java:11: cannot find symbol 
symbol : class LongWritable 
location: class org.myorg.WordCount 
    public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { 
                    ^
    [total 406ms] 
48 errors 

Есть ли какие-либо проблемы в моем пути к классам? Если да, то как я могу получить правильный путь класса? My WordCount.java находится в/Users/amrita/.... и hasoop в корне, есть ли какие-либо привилегии? Я не в состоянии генерировать WordCount.class

исходный код: WordCount.java

package org.myorg; 
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.mapred.*; 
import org.apache.hadoop.util.*; 
public class WordCount { 
    public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { 
     private final static IntWritable one = new IntWritable(1); 
     private Text word = new Text(); 
     public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { 
      String line = value.toString(); 
      StringTokenizer tokenizer = new StringTokenizer(line); 
      while (tokenizer.hasMoreTokens()) { 
       word.set(tokenizer.nextToken()); 
       output.collect(word, one); 
      } 
     } 
    } 
    public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> { 
     public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { 
      int sum = 0; 
      while (values.hasNext()) { 
       sum += values.next().get(); 
      } 
      output.collect(key, new IntWritable(sum)); 
     } 
    } 
    public static void main(String[] args) throws Exception { 
     JobConf conf = new JobConf(WordCount.class); 
     conf.setJobName("wordcount"); 
     conf.setOutputKeyClass(Text.class); 
     conf.setOutputValueClass(IntWritable.class); 
     conf.setMapperClass(Map.class); 
     conf.setCombinerClass(Reduce.class); 
     conf.setReducerClass(Reduce.class); 
     conf.setInputFormat(TextInputFormat.class); 
     conf.setOutputFormat(TextOutputFormat.class); 
     FileInputFormat.setInputPaths(conf, new Path(args[0])); 
     FileOutputFormat.setOutputPath(conf, new Path(args[1])); 
     JobClient.runJob(conf); 
    } 
} 
+0

работает здесь. Покажите мне исходный файл. – user1050755

+0

да, я загрузил. –

+0

Компилирует просто отлично. – user1050755

ответ

1

я создал простую программу, которая импортирует Hadoop классы:

import org.apache.hadoop.fs.Path; 
import org.apache.hadoop.conf.*; 
import org.apache.hadoop.io.*; 
import org.apache.hadoop.mapred.*; 
import org.apache.hadoop.util.*; 
public class WordCount { 
    public static void main(String args[]) { 
     System.out.println("test"); 
    } 
} 

и скомпилированные его с помощью этого команда javac -classpath "C:\Users\user\Desktop\hadd2\*" WordCount.java. В каталоге C:\Users\user\Desktop\hadd2\* У меня есть * .jars, загруженный с сайта hadoop (http://ftp.ps.pl/pub/apache/hadoop/common/stable/hadoop-1.0.4-bin.tar.gz). Приложение с успехом.

+0

Я попробовал простой код abv. Снова я получаю пакет ошибок org.apache.hadoop.fs не существует import org.apache.hadoop.fs.Path; ^ Trailjava.java:2: package org.apache.hadoop.conf не существует import org.apache.hadoop.conf. *; ^ Trailjava.java:3: пакет org.apache.hadoop.io не существует import org.apache.hadoop.io. *; ^ Trailjava.java:4: пакет org.apache.hadoop.mapred не существует import org.apache.hadoop.mapred. *; ^ Trailjava.java:5: пакет org.apache.hadoop.util не существует import org.apache.hadoop.util. *; ^ –

+0

Вы указали '-classpath' правильно? Вы должны передать его так, как этот '-classpath 'dirWithJars \ *" ', где' dirWithJars' - это каталог, который содержит библиотеки adoop * .jar. – pepuch

+0

Вы используете действительную установку Java? Попробуйте «java -version». У вас есть доступ для чтения к файлу jar? – user1050755

0

Компилятор здесь жалуется на класс MapReduce. Проверьте его путь к классу или оператор импорта, если не в ваших библиотеках аддопов.

0

hduser @ Linux: ~/Hadoop $ Javac -classpath /home/hduser/hadoop/hadoop-core-1.1.2.jar -d wordcount_classes WordCount.java

hduser @ Linux: ~/Hadoop $

-1

[решено]

Я использовал new hadoop api и МПГ был с old api

Смежные вопросы