2016-10-03 4 views
0

문제 우리는 기록이하나 이상의 키

을에지도-감소,라고 나는 R 어디 = 0, ..., n은. n은 커질 수 있습니다 (수십억).

모든 레코드에는 키 번호 k ij (j = 0, ..., m)이 있습니다. m은 작다 (예를 들어 20) 우리는 말할

, R P = R Q, K P0는 = K Q0, P1 = K Q1 ..., 또는 케이 경우 적어도 하나의 자신의 키가 동일한 경우, K PM = K이다 QM

는, 레코드는 동일하다. 우리는 그러한 레코드 집합을 찾아 그 집합에 대해 고유 한 ID를 생성해야합니다.

접근

실행 m지도-감소 각 작업은 하나의 키에 줄 경우, 작업을.

따라서, 작업 전, 매퍼를 방출 (R P I를 K) 및 감속기

( I 케이 { 1 ..., R P는 R}) 도착

모든 m 작업의 끝에서 하나의 동일한 키가있는 레코드 집합을 갖게됩니다.

S K = {R 리터} 우리는 수억에있을 수 있습니다 여전히 n보다 이하로 케이하지만 예상

, L은 적은 수의

(사이 2-5000 말) 할 수

최종 결과를 얻으려면 적어도 하나의 구성원이 공통적 인 위의 세트를 병합해야합니다.

나는 다음과 같은 질문이 있습니다

  1. 어떻게 효율적으로 이러한 세트를 병합을?
  2. 다른 방법으로이 문제를 해결할 수 있습니까?
+0

해싱은 어떻습니까? Key1-10? –

+0

BTW, 다중 단계 맵 축소 기능을 실행해도 작동하지 않는다는 것을 알게되었습니다. @Ayush k1-10을 해싱하면 무슨 뜻입니까? 하나의 "수퍼 키"가 있습니까? 그것도 작동하지 않을 것입니다. 수퍼 키의 평등은 키의 평등을 의미하지 않습니다. –

+0

더 명확하게 제공하기 위해 제 질문을 편집했습니다. –

답변

0

나는 ConnectedComponent 문제이며 잘 알려진 해결책을 알고 있습니다.