복붙노트

[HADOOP] 하둡과 함께 제공되는 기본 hashpartioner로 대체

HADOOP

하둡과 함께 제공되는 기본 hashpartioner로 대체

나는 고르지 키를 배포하는 하둡 맵리 듀스 프로그램이 있습니다. 일부 감속기는 두 개의 키, 하나의 키 일부, 그리고 아무도 일부와 끝까지. 어떻게 별도의 감속기에 특정 키를 사용하여 각 파티션을 배포하는 하둡을 강요하는 걸까. 나는 양식의 구 고유 키를 가지고 :

0,0
0,1
0,2
1,0
1,1
1,2
2,0
2,1
2,2

및 I는 job.setNumReduceTasks 세트 (9); 하지만 hashpartitioner는 중복 키가 같은 감속기로 전송되는 원인이 유휴 일부 감속기를 떠나 같은 해시 코드에 두 개의 키를 해시 보인다.

임의의 파티션 프로그램은이 문제를 해결합니까? 그것은 각 감속기를 보장하는 임의의 감속기에 각각의 고유 한 키를 보내드립니다 것은 하나의 키를받습니다. 어떻게 활성화 및 기본값을 대체 할 수 있습니까?

편집하다:

내 출력이처럼 보이는 이유는 누군가가 설명해주십시오 수 있습니다

-rw-r--r--   1 user supergroup          0 2018-04-19 18:58 outbin9/_SUCCESS
drwxr-xr-x   - user supergroup          0 2018-04-19 18:57 outbin9/_logs
-rw-r--r--   1 user supergroup        869 2018-04-19 18:57 outbin9/part-r-00000
-rw-r--r--   1 user supergroup       1562 2018-04-19 18:57 outbin9/part-r-00001
-rw-r--r--   1 user supergroup        913 2018-04-19 18:58 outbin9/part-r-00002
-rw-r--r--   1 user supergroup       1771 2018-04-19 18:58 outbin9/part-r-00003
-rw-r--r--   1 user supergroup        979 2018-04-19 18:58 outbin9/part-r-00004
-rw-r--r--   1 user supergroup        880 2018-04-19 18:58 outbin9/part-r-00005
-rw-r--r--   1 user supergroup          0 2018-04-19 18:58 outbin9/part-r-00006
-rw-r--r--   1 user supergroup          0 2018-04-19 18:58 outbin9/part-r-00007
-rw-r--r--   1 user supergroup        726 2018-04-19 18:58 outbin9/part-r-00008

큰 그룹의 일부-R-00001 파트 R-00003은 각각 키를 1,0 및 2,2 / 0,0 및 1,2 받았다. 그리고 그 부분-R-00006 및 부품-R-00007이 비어 알 수 있습니다.

해결법

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

    1.HashPartitioner 하나는 각각의 고유 한 "키"에 대한 작업을 감소 생성 하둡의 기본 파티션 프로그램입니다. 같은 키를 가진 모든 값은 감소 함수에 대한 단일 호출에, 당신의 감속기의 동일한 인스턴스로 이동합니다.

    HashPartitioner 하나는 각각의 고유 한 "키"에 대한 작업을 감소 생성 하둡의 기본 파티션 프로그램입니다. 같은 키를 가진 모든 값은 감소 함수에 대한 단일 호출에, 당신의 감속기의 동일한 인스턴스로 이동합니다.

    사용자가 다른 감속기 결과의 특정 그룹을 저장하는 데 관심이 있다면, 사용자는 자신의 파티션 프로그램 구현을 작성할 수 있습니다. 그것은 일반적인 목적의 수 또는 사용자 정의는 사용자 응용 프로그램에서 사용할 것으로 예상되는 특정 데이터 유형이나 값으로 만든 수 있습니다.

    사용자 정의 파티션 설정하면 사용자의 조건에 따라, 다른 감속기에 결과를 저장 할 수있는 과정입니다. 키에 의해 분할하는 파티션 프로그램을 설정하여, 우리가 그것을 보장 할 수 있습니다, 같은 키에 대한 기록은 같은 감속기로 이동합니다. 구분자는 하나의 감속기가 특정 키에 대한 모든 레코드를 수신하는 것을 보장한다.

    샘플 예제 링크

  2. from https://stackoverflow.com/questions/49933268/alternative-to-the-default-hashpartioner-provided-with-hadoop by cc-by-sa and MIT license