복붙노트

[HADOOP] 지도 축소의 보조 정렬

HADOOP

지도 축소의 보조 정렬

키가 감속기에 들어가기 전에 특정 키의 값을 정렬하는 방법을 이해했습니다. 나는 그것이 세 가지 방법 즉, keycomparator, partitioner 및 valuegrouping을 작성함으로써 이루어질 수 있다는 것을 배웠다.

이제 값 그룹화가 실행되면 기본적으로 자연 키와 관련된 모든 값이 그룹화됩니다. 따라서 자연 키의 모든 값을 그룹화하면 정렬 된 값 세트와 함께 감속기로 전송되는 실제 키는 무엇이 될까요? 자연 키는 둘 이상의 엔티티 유형 (복합 키의 두 번째 부분)과 연관되어있었습니다. 감속기로 전송되는 합성 키는 무엇입니까?

해결법

  1. ==============================

    1.이는 놀라운 일이지만, Iterable 값의 각 반복은 키 참조를 실제로 업데이트합니다.

    이는 놀라운 일이지만, Iterable 값의 각 반복은 키 참조를 실제로 업데이트합니다.

    protected void reduce(K key, Iterable<V> values, Context context) {
        for (V value : values) {
            // key object contents will update for each iteration of this loop
        }
    }
    

    나는 이것이 새로운 mapreduce API에서 작동한다는 것을 알고 있으며, 나는 이전 mapred API를 추적하지 않았다.

    그래서 귀하의 질문에 대답, 모든 열쇠를 사용할 수있을 것입니다, 첫 번째 열쇠는 그룹의 첫 번째 정렬 된 열쇠와 관련이 있습니다.

    편집 : 어떻게 그리고 왜이 작품에 대한 몇 가지 추가 정보 :

    감속기가지도 단계에서 출력 된 키 / 값 쌍을 처리하는 데 사용하는 두 가지 비교기가 있습니다.

    내부적으로 키와 값에 대한 참조는 변경되지 않으며 Iterable.Iterator.next ()를 호출 할 때마다 기본 바이트 스트림의 포인터가 다음 KV 쌍으로 이동합니다. 키 그룹이 현재 키 세트 세트와 이전 세트가 비교적 동일한 키인 것으로 결정하면 Iterable.iterator () 값의 hasNext 메소드는 true를 리턴하고 그렇지 않으면 false를 리턴합니다. true가 돌려 주어지면, 바이트는 reduce 메소드로 소비하기 위해서 Key와 Value의 인스턴스에 직렬화 복원됩니다.

  2. from https://stackoverflow.com/questions/11188971/secondary-sorting-in-map-reduce by cc-by-sa and MIT license