2012-06-07 3 views

답변

1

실제로 결합 자의 사용보다 부분 집계의 이점이 더 많습니다.

결합자가 유용한 경우는 제한적입니다. 또한 결합 자들은 감소 횟수가 아닌 작업에서 요구하는 처리량을 최적화합니다. 이는 중요한 성능 차이를 더하는 미묘한 차이입니다.

대규모 분산 워크 플로에서 부분 집계에 사용되는 범위가 훨씬 넓습니다. 또한 부분 집합을 사용하여 워크 플로에 필요한 작업 단계 수를 최적화 할 수 있습니다.

예시는 CountBySumBy 부분 집합체를 사용하는 https://github.com/Cascading/Impatient/wiki/Part-5에 나와있다. 해당 프로젝트에 대한 GitHub의 코드 커밋 내역을 살펴보면 이전에 GroupByCount이 사용되어 더 많은 감소가있었습니다.

0

특정 유형의 집계에 적합합니다. 계단식 집계는 집계 할 수있는 것에 대해 좀 더 유연합니다. from the cascading site (emphasis mine):

캐스 케이 딩은 소위 맵리 듀스 결합 장치를 지원하지 않습니다. 컴 바이 너는 맵퍼와 리 듀서 사이의 IO를 줄임으로써 매우 강력합니다. 지도 측의 일부 값을 계산할 수 있고 감속기로 결합 할 수있는 경우 왜 매퍼를 데이터로 변환하여 으로 보내야합니다. 그러나 결합 자는 'sum'및 'max'와 같이 연관 및 교환 기능으로 만 제한됩니다.. 그리고 작업을 위해 Map 태스크에서 나온 값을 직렬화하고 정렬 (비 직렬화 및 비교)하고 다시 직렬화하여 작업해야합니다. 다시 결과 이 직렬화되고 정렬됩니다. Combiners는 CPU가 IO의 이익을 위해 거래합니다.

캐스 케이 딩은 부분 집계를 수행하는 메커니즘을 제공함으로써 다른 접근 방식을 취하고지도 측도 결합하여 축소합니다. 면 축소. 그러나 캐스 케이 딩은 값 (최대)을 캐싱하여 IO 증가를 위해 거래 메모리를 선택합니다. 이 방법은 불필요한 직렬화, 역 직렬화 및 정렬 단계를 건너 뜁니다. 또한 Associative 및 Commutative 함수뿐만 아니라 집계 함수를 구현할 수 있습니다.

+0

나는 내 질문에 같은 링크를 주었다. 그러나 그것은 이론과 나는 연습에 대해 묻고 있습니다. – yura

관련 문제