복붙노트

[HADOOP] MapReduce의 교차 제품

HADOOP

MapReduce의 교차 제품

Java MapReduce를 사용하여 Hadoop의 두 데이터 세트에서 교차 제품의 값 비싼 연산을 수행하고 싶습니다.

예를 들어 데이터 세트 A와 데이터 세트 B의 레코드가 있고 데이터 세트 A의 각 레코드를 출력의 데이터 세트 B의 각 레코드와 일치 시키길 원합니다. 나는이 출력 크기가 | A | * | B |, 어쨌든 그것을하고 싶다.

돼지는 CROSS가 있지만 높은 수준에서 구현되는 방법을 알지 못합니다. 아마도 소스 코드를 살펴볼 것입니다.

어떤 코드도 찾지 않고,이 문제에 어떻게 접근해야 하는지를 상위 레벨에서 알고 싶을뿐입니다.

해결법

  1. ==============================

    1.문서 유사성 (다른 모든 문서와 비교)을 살펴볼 때 비슷한 점을 보였습니다. 그리고 두 데이터 집합을 나눈 다음 각 하위 집합에 대해 '분할'이 있음을 보장하는 사용자 지정 입력 형식이되었습니다.

    문서 유사성 (다른 모든 문서와 비교)을 살펴볼 때 비슷한 점을 보였습니다. 그리고 두 데이터 집합을 나눈 다음 각 하위 집합에 대해 '분할'이 있음을 보장하는 사용자 지정 입력 형식이되었습니다.

    그래서 당신의 쪼개진 모양은 (10 개의 레코드가 두 세트 합쳐져 100 개의 레코드가 출력됩니다.)

    A(1-10) x B(1-10)
    A(11-20) x B(1-10)
    A(21-30) x B(1-10)
    A(1-10) x B(11-20)
    A(11-20) x B(11-20)
    A(21-30) x B(11-20)
    A(1-10) x B(21-30)
    A(11-20) x B(21-30)
    A(21-30) x B(21-30)
    

    나는 그것이 얼마나 성능이 좋았는지 기억하지 못한다. 그러나 수천 개의 크기 순서로 설정된 문서를 가지고 (8 노드짜리 dev 클러스터에서) 서로 비교해 보았다. 수백만 개의 교차 곱이 계산되었다.

    일부 문서는 다른 사람들 (예 : 그들 사이에 너무 많은 시간적 여유가있는 경우)에 대해 결코 점수를 매기 지 않으므로 알고리즘을 개선 할 수 있으며 결과적으로 더 나은 스플릿을 생성 할 수 있습니다.

  2. from https://stackoverflow.com/questions/10365948/cross-product-in-mapreduce by cc-by-sa and MIT license