매퍼 클래스

매퍼는 입력 <키, 값> 쌍을 중간 <키, 값> 쌍의 집합에 매핑합니다. 중간 쌍은 입력 쌍과 같은 유형일 필요는 없습니다. 주어진 입력 쌍은 0 또는 여러 개의 출력 쌍에 매핑될 수 있습니다.

<K1, V1>* → 매퍼 → <K2, V2>*

주어진 입력 테이블에 대해 Netezza 맵/축소는 데이터 슬라이스당 하나의 맵 작업을 실행합니다. 결과적으로 맵 작업의 수는 입력 테이블이 배포되는 데이터 슬라이스 수에 따라 결정됩니다. 매퍼 성능을 최적화하려면 데이터가 데이터 슬라이스에 고르게 분산되어 있는지 확인합니다.

매퍼 구현은 setup(), map(), cleanup(), run()의 네 가지 메서드로 구성됩니다. 기본적으로 run() 메서드는 setup() 메서드를 한 번 호출한 다음, 각 입력 <키, 값> 쌍에 대해 map() 메서드를 호출하고, 마지막으로 cleanup() 메서드를 호출합니다. 예를 들어,
public void run(Context context) throws IOException,
InterruptedException {
setup(context);
while (context.nextKeyValue()) {
map(context.getCurrentKey(), context.getCurrentValue(), context);
}
cleanup(context);
}

기본적으로 map() 메서드는 입력을 출력으로 내보내며, 동일성 함수처럼 작동하므로 재정의해야 합니다. (고급 사용 사례의 경우 run()을 포함하여 이러한 메서드 중 하나를 재정의할 수 있습니다.)

매퍼용 컨텍스트 오브젝트

매퍼는 컨텍스트 객체에 액세스하여 매퍼가 나머지 환경과 상호 작용할 수 있습니다. 매퍼 및 기타 메서드에 인수로 전달되는 컨텍스트 객체는 작업의 구성 데이터에 대한 액세스를 제공하고 매퍼가 Context.write(key, value) 메서드를 사용하여 출력 쌍을 방출할 수 있도록 합니다.

Context.getConfiguration() 메서드는 맵/리듀스 프로그램 실행을 위한 구성 데이터가 포함된 구성 객체를 반환합니다. 작업에서 임의의 (키, 값) 구성 데이터 쌍을 설정한 다음(예: Job.getConfiguration().set("myKey", "myVal"") 메서드를 사용하여), Context.getConfiguration().get("myKey"") 메서드로 매퍼에서 이 데이터를 검색할 수 있습니다. (이 작업은 일반적으로 매퍼의 setup() 메서드를 사용하여 수행합니다.)

Cleanup() 메서드는 주로 재정의됩니다(기본적으로 정리가 수행되지 않음). 모든 입력이 처리된 후 정리를 수행해야 하는 경우 기본값을 재정의하고 주어진 사용 사례에 맞게 설정할 수 있습니다.