2016-04-01 11 views
2

私は2つのマッパークラスを持っています。そこで、MapperとChainReducer.setReducerメソッドを追加してReducerを設定するメソッドChainMapper.addMapperを使用しました。 ChainMapper.addMapper方法はOKですが、Chain.setReducer方法スロー構文エラーChainReducer.setReducerメソッドは "ChainReducerは引数に適用されません"というエラーをスローします

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) 

は、ここに私のDriverクラスです:

また、ブール型の引数を削除することで試してみました
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; 
    } 

"真"

JobConf Reduc = new JobConf(false); 
     ChainReducer.setReducer(conf, FileComparisionReduce.class, LongWritable.class, Text.class, LongWritable.class, Text.class, true , Reduc); 

答えて

1

は最終的に、私が得ました解決策。 間違ったパッケージをインポートしました。 import org.apache.hadoop.mapreduce.lib.chain.ChainReducer; import org.apache.hadoop.mapred.lib.ChainReducer;

の代わりに
関連する問題