2011-09-21 2 views

답변

12

주요 성능 차이는 없습니다. 이 말을하는 이유는 모두 동일한 데이터를 감속기에 전달하는 단일 MapReduce 작업이되는 것입니다. 둘 모두 외부 키인 키와 함께 모든 레코드를 전달해야합니다. 전혀 그렇지 않다면 COGROUP은 조금 더 빨라질 수 있습니다. 왜냐하면 히트를 가로 질러 데카르트 제품을 수행하지 않고 별도의 가방에 보관하기 때문입니다.

데이터 세트 중 하나가 작은 경우 "replicated join"이라는 조인 옵션을 사용할 수 있습니다. 이렇게하면 두 번째 데이터 세트가 모든 맵 작업에 분산되어 메인 메모리에로드됩니다. 이렇게하면 매퍼에서 전체 조인을 수행 할 수 있으며 감속기가 필요하지 않습니다. 내 경험상 조인과 코 그룹의 병목 현상은 전체 데이터 집합을 감속기로 이동하기 때문에 매우 유용합니다. 제 지식으로는 COGROUP으로는이 작업을 수행 할 수 없습니다.

+0

내부적으로 조인과 코그룹은 돼지에서 똑같습니다 (조인에서 진행되는 데카르트 조인은 없으며, 그 의미가 확실하지 않습니다). 사용한 키워드에 따라 최종 결과의 형식 만 변경됩니다. 조인 결과에 대해 "설명"을 시도하십시오 - 당신은 설명 계획에 COGROUP 연산자를 보게 될 것입니다. – SquareCog

+0

Cartesian 제품이 의미하는 바는 외래 키에 일치하는 항목이 여러 개 있으면 더 많은 레코드를 얻을 수 있다는 것입니다. 예를 들어, 하나의 데이터 세트에 3x "abcde"가 있고 두 번째 데이터 세트에 4x "abcde"가 있으면 각 레코드 세트가 일치하기 때문에 12x 레코드를 출력합니다. 한편, COGROUP에서는 관계를 분리하여 유지합니다. –

관련 문제