0

私はマッパーを持っています

public class BuildGraph{
   public void config(JobConf job){ <==this block doesnt seems to be exexcuting at all :(
    super.configure(job);
    this.currentId = job.getInt("currentId",0);
    if (this.currentId!=0){ 
    // I call a method from differnt class to build a distributed cache
    }
   }
  public void map(....){
....  
}

}

これが呼び出されるメインコードになりました..

public void run( String params,curId){
 JobConf conf = new JobConf(classname.class);
 conf.setInt("currentId",299); <--note this i am setting the value here
 conf.setMapperClass(BuildGraph.class);
 //.... 
  JobClient.runJob(conf);
}

しかし、問題はコード内の config メソッドが実行されていないことです。まるで "currentId" がメイン ループで 299 を返しますが、マッパー クラスではまったく設定されていません。私は何を間違っていますか

完全なコードへのリンク http://pastebin.com/DRPXUm62

4

1 に答える 1

1

拡張MapReduceBaseも実装もしていないため、正しい契約を使用していないようですMapper。また、メソッドは呼び出されるべきであり、呼び出されるべきではconfigureありませんconfig。次のようなことを試してください:

public class BuildGraph extends MapReduceBase implements Mapper<K, V, K, V> {
    public void configure(JobConf job) {
        // this will get called once at the beginning of the task
    }

    public void map(...) {
        ...
    }
}
于 2013-01-16T01:45:25.107 に答える