복붙노트

[HADOOP] 파티셔닝! 어떻게 그걸 만들었 니? 해시 함수를 사용 하시겠습니까? 기본 기능은 무엇입니까?

HADOOP

파티셔닝! 어떻게 그걸 만들었 니? 해시 함수를 사용 하시겠습니까? 기본 기능은 무엇입니까?

파티셔닝은 어떤 감속기 인스턴스가 어떤 중간 키와 값을 받을지 결정하는 프로세스입니다. 각 매퍼는 감속기가 출력 할 모든 출력 (키, 값) 쌍을 결정해야합니다. 어느 키에 대해서도, 생성 한 mapper 인스턴스에 관계없이 대상 파티션이 동일해야합니다. 문제 : 어떻게 만드 는가? 해시 함수를 사용 하시겠습니까? 기본 기능은 무엇입니까?

해결법

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

    1.Hadoop의 기본 파티셔너는 getPartition이라는 메서드가있는 HashPartitioner입니다. 그것은 key.hashCode () & Integer.MAX_VALUE를 취하고 reduce 작업의 수를 사용하여 모듈러스를 찾습니다.

    Hadoop의 기본 파티셔너는 getPartition이라는 메서드가있는 HashPartitioner입니다. 그것은 key.hashCode () & Integer.MAX_VALUE를 취하고 reduce 작업의 수를 사용하여 모듈러스를 찾습니다.

    예를 들어, 10 개의 축소 작업이있는 경우 getPartition은 모든 키에 대해 0에서 9까지의 값을 반환합니다.

    다음은 코드입니다.

    public class HashPartitioner<K, V> extends Partitioner<K, V> {
        public int getPartition(K key, V value, int numReduceTasks) {
            return (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks;
        }
    }
    

    커스텀 파티셔너를 생성하려면 Partitioner를 확장하고 getPartition 메소드를 생성 한 다음 드라이버 코드 (job.setPartitionerClass (CustomPartitioner.class);)에 파티셔를 설정하십시오. 이는 특히 2 차 정렬 작업을 수행 할 때 유용합니다.

  2. from https://stackoverflow.com/questions/18470833/partitioning-how-does-hadoop-make-it-use-a-hash-function-what-is-the-default by cc-by-sa and MIT license