복붙노트

[HADOOP] hadoop을 사용하여 자체 조인 / 교차 제품을 구현하는 방법은 무엇입니까?

HADOOP

hadoop을 사용하여 자체 조인 / 교차 제품을 구현하는 방법은 무엇입니까?

항목 쌍에 대해 몇 가지 평가를하는 것은 일반적인 작업입니다. 예 : 중복 제거, 협업 필터링, 유사 항목 등 이것은 기본적으로 동일한 데이터 소스를 사용하는 자체 조인 또는 교차 제품입니다.

해결법

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

    1.자체 조인을 수행하려면 "축소 측 조인"패턴을 따라갈 수 있습니다. 매퍼는 키로 조인 / 외래 키를 내보내고 값으로 레코드를 내 보냅니다.

    자체 조인을 수행하려면 "축소 측 조인"패턴을 따라갈 수 있습니다. 매퍼는 키로 조인 / 외래 키를 내보내고 값으로 레코드를 내 보냅니다.

    따라서 다음 데이터에서 "도시"(가운데 열)에 자체 조인을 수행하려고한다고 가정 해 봅시다.

    don,baltimore,12
    jerry,boston,19
    bob,baltimore,99
    cameron,baltimore,13
    james,seattle,1
    peter,seattle,2
    

    매퍼는 key-> value 쌍을 방출합니다.

    (baltimore -> don,12)
    (boston -> jerry,19)
    (baltimore -> bob,99)
    (baltimore -> cameron,13)
    (seattle -> james,1)
    (seattle -> peter,2)
    

    감속기에서, 우리는 이것을 얻을 것이다 :

    (baltimore -> [(don,12), (bob,99), (cameron,13)])
    (boston -> [(jerry,19)])
    (seattle -> [(james,1), (peter,2)])
    

    여기에서 내부 조인 논리를 선택할 수 있습니다. 이렇게하려면 다른 모든 항목에 대해 모든 항목을 일치시켜야합니다. 이렇게하려면 데이터를 배열 목록에로드 한 다음 항목을 N x N 반복하여 서로를 비교합니다.

    축소 측 조인은 비용이 많이 듭니다. 당신이 아무것도 걸러 내지 않으면 그들은 꽤 많은 데이터를 감속기에 보냅니다. 또한 감속기의 메모리에 데이터를로드하는 데주의하십시오. 어레이 목록에 모든 데이터를로드하여 핫 조인 키로 힙을 날릴 수 있습니다.

    위의 내용은 일반적인 축소 측 결합과 약간 다릅니다. 두 개의 데이터 세트를 결합 할 때 아이디어가 동일합니다. 외래 키가 키이고 레코드가 값입니다. 유일한 차이점은 두 개 이상의 데이터 세트에서 값이 올 수 있다는 것입니다. MultipleInputs를 사용하여 다른 매퍼가 서로 다른 입력 세트를 구문 분석하도록 한 다음 감속기가 둘 다에서 데이터를 수집하도록 할 수 있습니다.

    제약 조건이없는 경우 교차 제품은 악몽입니다. 나.

    select * from tablea, tableb;
    

    이를 수행하는 데는 여러 가지 방법이 있습니다. 그들 중 누구도 특히 효율적이지 않습니다. 이런 유형의 행동을 원한다면 나에게 의견을 남겨주세요. 그러면 이것을 수행하는 방법을 설명하는 데 더 많은 시간을 할애 할 것입니다.

    만약 당신이 유사성에 대한 근본적인 열쇠 인 조인 키를 찾아 낼 수 있다면, 당신은 훨씬 나아질 것입니다.

    내 책 플러그 : MapReduce 디자인 패턴. 몇 달 안에 발표해야하지만, 정말로 관심이 있다면 조인에 관한 장을 이메일로 보내 줄 수 있습니다.

  2. ==============================

    2.일반적으로 감속기를 사용하여 조인에 필요한 논리를 수행합니다. 트릭은 데이터 세트를 두 번 매핑하는 것이고, 어떤 마커를 실행하는지 나타내는 값에 마커를 추가하는 것입니다. 그러면 자체 조인은 다른 조인과 다르지 않습니다.

    일반적으로 감속기를 사용하여 조인에 필요한 논리를 수행합니다. 트릭은 데이터 세트를 두 번 매핑하는 것이고, 어떤 마커를 실행하는지 나타내는 값에 마커를 추가하는 것입니다. 그러면 자체 조인은 다른 조인과 다르지 않습니다.

  3. from https://stackoverflow.com/questions/11066434/how-to-implement-self-join-cross-product-with-hadoop by cc-by-sa and MIT license