2012-10-25 160 views
0

compareTo過程中更改密鑰中的值在使用自定義密鑰的mapreduce作業的compareTo過程中,有更改實例變量的值的方法嗎? (我有一些問題,因爲它使用兩種方法讀取和寫入數據= readFields(DataInput in)和write(DataOutput out),並且它只在第一次將對象寫入框架,而我無法修改其餘部分過程)在hadoop mapreduce

我有此代碼爲我的我的自定義鍵

@Override 
    public int compareTo(MultipleText m1) { 
     for(Writable one : m1.getChiavi().keySet()) 
     { 
      if(this.chiavi.keySet().contains(one)) 
      { 
       if(this.chiavi.get(one).equals(m1.getChiavi().get(one))) 
        if(!strutturaTab.equals(m1.getStrutturaTab())) 
        { 
//      if(this.chiavi.size()>m1.getChiavi().size()) 
//       m1.setChiaviComplete(this.chiavi); 
//      else if(this.chiavi.size()<m1.getChiavi().size()) 
//       this.setChiaviComplete(m1.getChiavi()); 
         return 0; 
        } 
       return 1; 
      } 
      return 2; 
     } 
     return -1; 
    } 

的的compareTo註釋行是doesen't作品

當它減少相法getChiaviComplete

(行)返回null,這是我初始化和寫入時的值(使用write(DataOutput out)方法)實例變量(chiaviComplete )

回答

0

比較過程中不能更改密鑰,因爲比較的記錄只是記錄的副本。更改對象不會更改記錄。