본문 바로가기
Hadoop

Hadoop setPartitionerClass & setGroupingComparatorClass

by 언덕너머에 2014. 6. 16.

- setPartitionerClass & setGroupingComparatorClass

  

  * setPartitionerClass 

    파티셔너는 맵 태스크의 출력 데이터를 리듀스 태스크의 입력 데이터로 보낼지 결정하고,

    이렇게 파티셔닝된 데이터는 맴 태스크의 출력 데이터의 키의 값에 따라 정렬된다.

    MapReducer에서 사용하는 파티셔너는 반드시 org.apache.hadoop.mapreduce.Partitioner를

    상속받아서 구현해야 한다. 이때 파티셔너 설정하는 두 개의 패러미터는 Mapper의 

    출력 데이터 키와 값에 해당하는 패러미터이다.


    예)

    import org.apache.hadoop.mapreduce.Partitioner;


    public class RecPartitioner<KEY, VALUE> extends Partitioner<KEY, VALUE> {


@Override

public int getPartition(KEY key, VALUE value, int numPartitions) {

String strKey = key.toString();


        return (strKey.hashCode() & Integer.MAX_VALUE) % numPartitions;

}


    }


  * setGroupingComparatorClass

    Groupkey Comparator를 사용해서 같은 Groupkey에 해당하는 모든 데이터를 하나의 Reducer

    그룹에서 처리할 수 있다.

  

    예)

    import org.apache.hadoop.io.Text;

    import org.apache.hadoop.io.WritableComparable;

    import org.apache.hadoop.io.WritableComparator;


    public class RecGroupingComparator extends WritableComparator {


protected RecGroupingComparator() {

            super(Text.class, true);

    // TODO Auto-generated constructor stub

}


        public int compare(WritableComparable w1, WritableComparable w2) {

    Text t1 = (Text) w1;

            Text t2 = (Text) w2;


    String t1Key = t1.toString();

    String t2Key = t2.toString();


    return t1key.compareTo(t2key);

        }

    }

'Hadoop' 카테고리의 다른 글

Hadoop Writable  (0) 2014.07.02
Hadoop OutputCollector  (0) 2014.06.27
Hadoop Chain  (0) 2014.06.16
Hadoop Output Format  (0) 2014.06.13
Reducer  (0) 2014.06.09