모든 감속기에 특정 레코드를 보내려면 어떻게해야합니까?Hadoop이 모든 감속기에 기록을 보냅니다.
저는 Partitioner 클래스와 그 기능을 알고 있지만 레코드가 모든 축소기에 사용되는지 확인하는 쉬운 방법은 없습니다.
기본적으로 파티션 설정이 방법이 있습니다 매퍼는 기록을 줄일 수와 동일한 수 차례 출력 유지 : 다음과 같이 내 첫번째 생각은 협업 파티션 설정과 매퍼을 가지고 있었다
int getPartition(K2 key,
V2 value,
int numPartitions)
작업과 Partitioner는 모든 int (0에서 numPartitions-1까지)를 반환합니다. 이렇게하면 레코드가 모든 파티션에 도달합니다.
이 문제를 해결하는 더 현명한 방법이 있습니까? 예를 들어, 모든 파티션으로 보내야하는 레코드에 대해 -1을 반환하고 반환 된 -1을 볼 때 프레임 워크가이를 수행합니다.
또한 필자가 필요로하는 그룹 비교기와 관련하여이 대답을 업데이트해야합니다. –
이것은 내가 생각했던 방식이다. 필자는이를 매우 명확하게 설명하지 않았고 Partitioner 객체에있는 카운터가 반환해야하는 다음 파티션이 무엇인지 계속 추적하려고 생각했습니다. 그러나 Partitioner 개체가 GC로 처리되고 카운터가 재설정 될 수 있기 때문에 이것이 해결책이라고 확신하지 못합니다. 그룹화 비교기에 대해서는 설명하지 않은 요구 사항에 따라 달라지는 것 같습니다. 필요한 경우 다시 올게요. 감사합니다. – Razvan