아래 코드는 hadoop의 tesasort의 구현에 포함되어 있는 partitioner의 getPartition method를 발췌한 내용이다.
"aaa"를 입력으로 아래 소스를 수행하면 "0110 0001 0110 0001 0110 0001"가 되고 이 값을 reducesPerNode의 값으로 나눈 것이 반환 값이 되는 소스이다. 여기서 reducesPerNode의 값은 Job에서 수행되는 reduce의 갯수라고 한다. (Configure 객체의 메소드 호출 시 MRJobConfig.NUM_REDUCES 매개변수로 전달하여 값을 획득할 수 있다.)
prefix의 비트를 8bit shift 시키고 나서 bytes[0 - 2]의 내용을 0xFF(256(10), 1111 1111(2))와 | 연산 한 값을 prefix에 저장하는 코드이다. 이렇게 하여 리듀스를 수행할 테스크를 선택한다고....
byte[] bytes = key.getBytes(); int len = Math.min(3, key.getLength()); int prefix = 0; for( int i = 0; i < len; ++i ) { prefix = (prefix << 8) | (0xFF & bytes[i]); } return prefix / reducersPerNode;
정말인지는 확인해봐야 겠지...?!
'MISCELLANEOUSNESS' 카테고리의 다른 글
멀티리더기 오작동의 원인? (0) | 2013.01.19 |
---|---|
java xml parsing. (0) | 2013.01.14 |
프로토콜 버퍼(Protocol Buffer) 설치. (2) | 2013.01.08 |