2015-01-08 2 views
0

매퍼 결과의 명시 그룹화, 나는하둡 - 나는 키가 IntTextPair로 방출되는 매퍼 코드를 작성했습니다

[1 Shanghai] 
[1 Test] 
[2 Set] 

과 매퍼처럼 IntTextPair에서 불과 지능에 의해 그룹에 매퍼 결과를 원하는 나는 비교기 클래스 구현 한

[1 Shanghai, Test] 
[2 Set] 

:

import org.apache.hadoop.io.WritableComparable; 
import org.apache.hadoop.io.WritableComparator; 


public class GroupByInput extends WritableComparator { 

    public GroupByInput() { 
     super(IntTextPair.class, true); 
    } 

    @Override 
    public int compare(WritableComparable it1, WritableComparable it2) { 
     IntTextPair Pair1 = (IntTextPair) it1; 
     IntTextPair Pair2 = (IntTextPair) it2; 

     return Pair1.getFirst().compareTo(Pair2.getFirst()); 
    } 
} 

과 같은 결과를 그룹화한다 구성 파일에서 다음과 같이 비교기 클래스를 설정했습니다.

Configuration conf = new Configuration(); 
    Job job = new Job(conf); 
    job.setGroupingComparatorClass(GroupByInput.class); 

올바른 방향으로 가고 있습니까? 도움이 필요합니다.

답변

0

현재 윤곽을 잡은대로 키를 병합/통합 할 수 없습니다. 현재 매퍼 출력 값 유형/클래스는 무엇입니까 - 매퍼에서 KV를 출력 할 수없는 이유가 있습니까?

다른 클래스/유형의 현재 가치의 구성 요소로 매퍼에서 출력되는이있는 경우, 당신은 여전히 ​​다소하여이 작업을 수행 할 수 있습니다 : IntTextPair 수단의 순서와 짝을 귀하의 GroupComparator 좋아 보인다

  1. , 동일한 Int 구성 요소를 갖는 모든 키는 동일한 감속기로 전송됩니다.
  2. 감속기에서 값을 반복 할 때 키를 검사하여 키의 텍스트 구성 요소의 고유 목록을 결정할 수 있습니다.
    • 감속기의 값을 반복 할 때 키의 내용도 업데이트된다는 사실은 잘 알려져 있지 않습니다. Intu 구성 요소는 항상 특정 감소 실행과 동일하지만 Text 구성 요소는
    • 변경 키가 정렬됩니다, 당신은 이전의 텍스트 구성 요소 값
(당신은 반복 가능한 값의 다음 값을 반복하기 전에 내용을 복사해야합니다)을 추적 할 수 있습니다
관련 문제