2013-03-14 2 views
2

Hadoop Reducer에서 특정 조건에서 새 키를 생성하여 방출하고 싶습니다. 이러한 키가 고유한지 확인하고 싶습니다.Hadoop Reducer에서 새 고유 키를 작성하는 방법

내가 원하는에 대한 의사 코드 같은 간다 : (

  1. 그것을 감소 ​​하나 이상의 다른 키에서 방출하는 모든 가능 :

    @Override 
    protected void reduce(WritableComparable key, Iterable<Writable> values, Context context) 
             throws IOException, InterruptedException { 
        // do stuff: 
        // ... 
        // write original key: 
        context.write(key, data); 
        // write extra key: 
        if (someConditionIsMet) { 
         WritableComparable extraKey = createNewKey() 
         context.write(extraKey, moreData); 
        } 
    } 
    

    그래서 지금이 개 질문이)? 나는 열쇠가 의지하지 않을 것이라는 점을 알고있다 그러나 그것은 저를 위해 좋다.

  2. 여분의 키는 모든 감속기에서 고유해야합니다 (적용상의 이유와 그렇지 않으면 감속 단계의 계약에 위배됩니다). 감속기에서 고유 한 키를 생성하는 좋은 방법은 무엇입니까?

    감속기/작업 ID를 가져 와서 키 생성에 포함시킬 수 있습니까?

답변

2
  1. 예를 출력 당신은 당신의 키에 작업을 시도 정보를 통합 할 수 있습니다
  2. 키의 수는 독특한 작업 (감속기를 통해 당신이 원하는 경우도 투기 적 실행을 처리) 만들 수 있습니다. 감속기의 Context.getTaskAttemptID() 방법에서이 정보를 얻은 다음 TaskAttemptID.getTaskID().getId()
과 함께 감속기 ID 번호를 추출 할 수 있습니다
관련 문제