2014-01-21 3 views
0

Java MapReduce 문제가 발생했습니다. 다음 명령을 사용하여 코드를 컴파일하면 오류가 발생합니다. 아래에 나열되어 있습니다. 제발 도와주세요. 미리 감사드립니다Mapreduce 프로그램에서 오류가 발생했습니다.

소스 코드

package cvkumar.hadoopmr; 
import java.io.IOException; 
import java.util.StrinTokenizer; 
import org.apache.hadoop.fs.Path; 
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.*; 
import org.apache.hadoop.io.IntWritable; 
import org.apache.hadoop.mapreduce.Job; 
import org.apache.hadoop.mapreduce.Mapper; 
import org.apache.hadoop.mapreduce.Reducer; 
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; 
import org.apache.hadoop.mapreduce.lib.input.KeyValueTextInputForm; 
import org.apache.hadoop.mapreduce.lib.output.FileOutFormat; 
import org.apache.hadoop.util.GenericOptionsParser; 

public class Dictionary 
{ 
    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")); 
     FileInputFormat.addInputPath(job, new Path(args[0])); 
     FileOutputFormat.setOutputPath(job, new Path(args[1])); 
      System.exit(job.waitForCompletion(true) ? 0 : 1); 
     } 
} 

오류

$ javac의의 -classpath 하둡 코어-1.2.1.jar -d ./Dictionary ./cvkumar/hadoopmr/ Dictionary.java

[email protected]:~/hadoop-1.2.1$ javac -classpath hadoop-core-1.2.1.jar -d ./Dictionary ./cvkumar/hadoopmr/Dictionary.java 
./cvkumar/hadoopmr/Dictionary.java:3: cannot find symbol 
symbol : class StrinTokenizer 
location: package java.util 
import java.util.StrinTokenizer; 
       ^
./cvkumar/hadoopmr/Dictionary.java:15: cannot find symbol 
symbol : class KeyValueTextInputForm 
location: package org.apache.hadoop.mapreduce.lib.input 
import org.apache.hadoop.mapreduce.lib.input.KeyValueTextInputForm; 
              ^
./cvkumar/hadoopmr/Dictionary.java:16: cannot find symbol 
symbol : class FileOutFormat 
location: package org.apache.hadoop.mapreduce.lib.output 
import org.apache.hadoop.mapreduce.lib.output.FileOutFormat; 
              ^
./cvkumar/hadoopmr/Dictionary.java:27: cannot find symbol 
symbol : class StringTokenizer 
location: class cvkumar.hadoopmr.Dictionary.WordMapper 
      StringTokenizer itr = new StringTokenizer(value.toString(),","); 
      ^
./cvkumar/hadoopmr/Dictionary.java:27: cannot find symbol 
symbol : class StringTokenizer 
location: class cvkumar.hadoopmr.Dictionary.WordMapper 
      StringTokenizer itr = new StringTokenizer(value.toString(),","); 
            ^
./cvkumar/hadoopmr/Dictionary.java:61: setInputFormatClass(java.lang.Class<? extends org.apache.hadoop.mapreduce.InputFormat>) in org.apache.hadoop.mapreduce.Job cannot be applied to (java.lang.Class<org.apache.hadoop.mapred.KeyValueTextInputFormat>) 
      job.setInputFormatClass(KeyValueTextInputFormat.class); 
      ^
./cvkumar/hadoopmr/Dictionary.java:65: setOutputPath(org.apache.hadoop.mapred.JobConf,org.apache.hadoop.fs.Path) in org.apache.hadoop.mapred.FileOutputFormat cannot be applied to (org.apache.hadoop.mapreduce.Job,org.apache.hadoop.fs.Path) 
     FileOutputFormat.setOutputPath(job, new Path(args[1])); 
         ^
7 errors 
+0

import java.util.StringTokenizer; – michaeltang

+0

신속하게 수입품이 올바른지 확인하십시오. import org.apache.hadoop.mapreduce.lib.input.KeyValueTextInputFormat; import java.util.StringTokenizer; –

답변

1

답변은 이미 t입니다. 여기, 자바 컴파일러에 의해. 변경 다음 줄 :

라인 3 :

import java.util.StringTokenizer; 

라인 15 :

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

라인 16 :

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

: 당신이 IDE 등을 사용하는 경우 Eclipse 또는 NetBeans에서 자바 컴파일 오류가 이미 높아야합니다. 조명이 켜지면서 문제를 해결하는 방법에 대한 팁을 보여줍니다. IDE를 사용하지 않는다면, 그렇게 할 것을 강력히 권장합니다! MapReduce 프로그램을 작성하고 있으므로 이클립스를 제안한다. 여기에는 hadoop plugin을 찾을 수있다.

관련 문제