복붙노트

[HADOOP] MRJob이 내 키를 정렬하는 이유는 무엇입니까?

HADOOP

MRJob이 내 키를 정렬하는 이유는 무엇입니까?

상당히 큰 MRJob 작업 (1,755,638 개의 키)을 실행하고 있으며 키는 분류기에 순서대로 기록됩니다. 하둡이 해시 파티 셔 너를 사용하도록 지정하더라도 다음과 같이 발생합니다.

class SubClass(MRJob):

    PARTITIONER = "org.apache.hadoop.mapred.lib.HashPartitioner"

...

키 정렬을 요구하지 않을 때 키가 정렬되는 이유를 이해하지 못합니다.

해결법

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

    1.HashPartitioner는 파티 셔 너를 명시 적으로 지정하지 않으면 기본적으로 사용됩니다.

    HashPartitioner는 파티 셔 너를 명시 적으로 지정하지 않으면 기본적으로 사용됩니다.

  2. ==============================

    2.키는 기본적으로 정렬되지 않지만 데이터 세트가 작은 경우 HashPartitioner가 정렬 키 모양을 제공합니다. 데이터 세트의 크기를 50M에서 10G로 늘리면 키 정렬이 중지되었습니다.

    키는 기본적으로 정렬되지 않지만 데이터 세트가 작은 경우 HashPartitioner가 정렬 키 모양을 제공합니다. 데이터 세트의 크기를 50M에서 10G로 늘리면 키 정렬이 중지되었습니다.

  3. ==============================

    3.MR은 키 / 값 쌍을 키별로 정렬하므로 주어진 키의 모든 값이 감속기로 함께 전달 될 수 있습니다. 실제로 reduce () 메소드에 전달 된 Iterable은 새로운 키를 찾을 때까지 정렬 된 목록을 읽은 다음 반복을 중지합니다. 그렇기 때문에 키가 항상 순서대로 나타납니다.

    MR은 키 / 값 쌍을 키별로 정렬하므로 주어진 키의 모든 값이 감속기로 함께 전달 될 수 있습니다. 실제로 reduce () 메소드에 전달 된 Iterable은 새로운 키를 찾을 때까지 정렬 된 목록을 읽은 다음 반복을 중지합니다. 그렇기 때문에 키가 항상 순서대로 나타납니다.

  4. from https://stackoverflow.com/questions/42078886/why-is-mrjob-sorting-my-keys by cc-by-sa and MIT license