2012-10-25 2 views
0

사용자 정의 키로 mapreduce 작업의 compareTo 동안 인스턴스 변수의 값을 변경하는 방법이 있습니까? (읽기 및 쓰기 두 가지 방법으로 데이터를 = readFields (DataInput에서) 및 쓰기 (DataOutput out) 때문에 몇 가지 문제가 있고 처음에는 프레임 워크에 개체를 씁니다 및 나머지 부분에 대해 수정할 수 없습니다. 과정)hadoop mapreduce에서 compareTo 동안 키의 값을 변경

내가

@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와이 코드를 주석 처리 된 줄은 작품

이 상에게 방법 getChiaviComplete을 줄이기 위해 간다

을 (doesen't 라인은) null을 반환합니다, 그 값은 내가 초기화하고 (write (DataOutput out) 메소드를 사용하여) 인스턴스 변수 (chiaviComplete)

답변

0

비교되는 레코드는 레코드의 복사본이기 때문에 비교하는 동안 키를 변경할 수 없습니다. 오브젝트를 변경해도 레코드는 변경되지 않습니다.

관련 문제