2017-04-13 2 views
0

ich eine Java-Datei für Wortzählimpuls hadoop kompilieren, aber wenn es Kompilieren wirft er einen Fehler:Fehler: <identifier> in java hadoop erwartet

CountBook.java:33: error: expected public void reduce(Text_key,Iteratorvalues,OutputCollectoroutput,Reporter reporter)throws IOException

dies mein Code

public class CountBook 
{ 
    public static class EMapper extends MapReducebase implements 
    Mapper<LongWritable,Text,Text,IntWritable> 
    { 
     private final static Intwritable one = new Intwritable(1); 
     public void map(LongWritable key,Text value,OutputCollector<Text,IntWritable>output,Reporter reporter)throws IOException 
     { 
      String line = value.toString(); 
      String[] Data = line.split("\";\""); 
      output.collect(new text(Data[0]),one); 

     } 
    } 


public static class EReduce extends MapReduceBase implements 
Reducer<Text,IntWritable,Text,IntWritable> 
{ 
    public void reduce(Text_key,Iterator<IntWritable>values,OutputCollector<text,intWritable>output,Reporter reporter)throws IOException 
    { 
     Text key=_key; 
     int authid=0; 
     while(values.hasNext()) 
     { 
      IntWritable value = (IntWritable)values.next(); 
      authid+=value.get(); 
     } 
     output.collect(key,new intWritable(authid)); 
    } 
} 


public static void main(String args[])throws Exception 
{ 
    JobConf conf = new JbConf(CountBook.class); 
    conf.setjobName("CountBookByAuthor"); 
    conf.setOutputkeyClass(Text.class); 
    conf.setOutputValueClass(IntWritable.class); 
    conf.setMapperClass(EMapper.class); 
    conf.setCombinerClass(EReduce.class); 
    conf.setReducerClass(EReducer.class); 
    conf.setOutputFormat(TextOutputFormat.class); 
    FileInputFormat.setInputPaths(conf,new path(args[0])); 
    FileOutputFormat.setOutputPath(conf,new Path(args[1])); 
    JobCLient.runJob(conf); 
} 
} 

I bin hadoop-Core-1.2.1.jar für classpath-Bibliothek und in centOS 7

+1

Offenbar versuchen Sie, öffentliche Mädels in öffentliche Klassen einzubetten - dies ist nicht möglich, da jede öffentliche Klasse in einer eigenen Datei enthalten sein muss –

Antwort

1

Sie laufen derzeit haben:

reduce(Text_key, 
     Iterator<IntWritable>values, 
     OutputCollector<text,intWritable>output, 
     Reporter reporter) 

es sein sollte:

reduce(Text key, 
     Iterator<IntWritable> values, 
     OutputCollector<Text,IntWritable> output, 
     Reporter reporter) 

Die wichtigsten Unterschiede key braucht einen Raum zwischen ihm und Text und die Typen in OutputCollector<> capatilized werden müssen, zu sein.

Verwandte Themen