2016-10-08 4 views
0

mapreduce 프로그램에서 내 감속기의 출력은 1 백만 라인의 출력을 생성하지만 초기 3 개의 출력 라인 만 있으면됩니다. 그리고 그것은 내가 본 Reducer 클래스의 인스턴스 변수를 유지하고 있는데, 얼마나 많은 레코드를 봤는지 계산하고, 3 초 후에는 출력을 멈 춥니 다.하지만 여전히 감속기는 1 백만 레코드를 모두 통과해야합니다. 내 코드의 성능을 향상시키기 위해 처음 세 레코드를 읽는 즉시 실행을 중지 할 수있는 방법이 있습니까?맵 축소 API에서 감속기의 출력 제한

또한 여기서는 감속기를 1로 계산해야하므로 내 인스턴스 변수 수가 제대로 작동하고 프로그램의 성능을 저하시킬 수 있습니다.

감사합니다. 정말 감사드립니다.

+0

나는이 시나리오를 정말로 생각하지 못했다. 정말 좋은 질문이다. – Azim

답변

0

귀하의 경우에는이 클래스 안에 감속기의 수를 1로 설정할 수 있습니다. 처음 세 줄을 계산하여 출력을 내 보낸 다음 아무 것도 방출하지 않는 다른 입력은 무시하십시오. 이것은 매퍼가 계산 한 모든 키에 대해 reduce() 메서드를 계속 호출하도록 프레임 워크를 중단하지 않습니다.

가능한 경우 매퍼 수준, 결합기 또는 분할기에서 출력을 줄여야합니다.

AFAIK 프로세스를 중지하는 데는 줄일 방법이 없습니다.

+0

나는 똑같은 일을했다. 내 감속기 코드의 성능을 향상시키는 좀 더 최적화 된 방법을 찾고 있었다. 또한 출력 데이터를 제한 할 수 없다. 내 상황에서지도 쪽. – Arpan

+0

감속기를 멈추려 할 때 더 적은 양의 데이터를 제공해야합니다. 성능을 높이려면 Spark에 대해 생각하기 시작해야합니다. – ozw1z5rd