Ich habe zwei Mapper-Klassen. So verwendet ChainMapper.addMapper
Methode, um Mapper und ChainReducer.setReducer
Methode Reducer zu setzen. ChainMapper.addMapper
Methode ist OK aber Chain.setReducer
Methode throw SyntaxfehlerChainReducer.setReducer Methode wirft Fehler "ChainReducer ist nicht anwendbar für die Argumente"
The method setReducer(Job, Class<? extends Reducer>, Class<?>, Class<?>, Class<?>, Class<?>, Configuration) in the type ChainReducer is not applicable for the arguments (JobConf, Class<FileComparisionReduce>, Class<LongWritable>, Class<Text>, Class<LongWritable>, Class<Text>, boolean, JobConf)
Hier ist meine Treiberklasse:
package fileComparision;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.JobClient;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapred.FileInputFormat;
import org.apache.hadoop.mapred.FileOutputFormat;
import org.apache.hadoop.mapred.MapReduceBase;
import org.apache.hadoop.mapred.Mapper;
import org.apache.hadoop.mapred.lib.ChainMapper;
import org.apache.hadoop.mapreduce.lib.chain.ChainReducer;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
public class DriverComparision extends Configured implements Tool{
@Override
public int run(String[] arg0) throws Exception {
JobConf conf = new JobConf(true);
conf.setJobName("Comaprision of 2 file ");
JobConf Mapper1 = new JobConf(false);
ChainMapper.addMapper(conf, FileComparisionMapper1.class, LongWritable.class, Text.class, LongWritable.class, Text.class, true, Mapper1);
JobConf Mapper2 = new JobConf(false);
ChainMapper.addMapper(conf, FileComparisionMapper2.class, LongWritable.class, Text.class, LongWritable.class, Text.class, true, Mapper2);
JobConf Reduc = new JobConf(false);
ChainReducer.setReducer(conf, FileComparisionReduce.class, LongWritable.class, Text.class, LongWritable.class, Text.class, true , Reduc);
FileInputFormat.setInputPaths(conf, new Path(arg0[0]));
FileOutputFormat.setOutputPath(conf, new Path(arg0[1]));
conf.setMapOutputKeyClass(LongWritable.class);
conf.setMapOutputValueClass(Text.class);
conf.setOutputKeyClass(LongWritable.class);
conf.setOutputValueClass(Text.class);
JobClient.runJob(conf);
return 0;
}
auch versucht, durch Boolesche Argument zu entfernen "true"
JobConf Reduc = new JobConf(false);
ChainReducer.setReducer(conf, FileComparisionReduce.class, LongWritable.class, Text.class, LongWritable.class, Text.class, true , Reduc);