복붙노트

[HADOOP] 공동 배치 된 조인 (a-la-netezza)이 이론적으로 하이브에서 가능합니까?

HADOOP

공동 배치 된 조인 (a-la-netezza)이 이론적으로 하이브에서 가능합니까?

동일한 키에 분산되어 있고 조인 조건에서 이러한 키 열을 사용하는 테이블을 조인하면 netezza의 각 SPU (컴퓨터)가 다른 100 % 독립적으로 작동합니다 (nz- 인터뷰 참조).

하이브에는 버킷 맵 조인이 있지만 테이블을 나타내는 파일을 데이터 노드에 배포하는 것은 HDFS의 책임이며 하이브 CLUSTERED BY 키에 따라 수행되지 않습니다!

따라서 동일한 키로 클러스터링 된 2 개의 테이블이 있고 해당 키로 조인한다고 가정하면 일치하는 버킷이 동일한 노드에있을 것이라는 HDFS로부터 하이브를 보장받을 수 있습니까? 또는 항상 작은 테이블의 일치하는 버킷을 큰 테이블 버킷을 포함하는 데이터 노드로 이동해야합니까?

고마워, 아이도

(참고 : 이것은 이전 질문에 대한 더 좋은 표현입니다. 하이브 / 하둡은 각 맵퍼가 로컬 데이터에 대해 어떻게 작동하는지 어떻게 보장합니까?)

해결법

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

    1.HDFS에 데이터 블록을 저장할 위치를 알려주는 것이 불가능하다고 생각합니다. 작은 클러스터에 대해 다음과 같은 트릭을 고려할 수 있습니다. 테이블 중 하나의 복제 팩터를 클러스터의 노드 수에 가깝거나 같은 수로 늘리십시오. 결과적으로-결합 프로세스 동안 필요한 데이터는 거의 항상 (또는 항상) 필요한 노드에 존재합니다.

    HDFS에 데이터 블록을 저장할 위치를 알려주는 것이 불가능하다고 생각합니다. 작은 클러스터에 대해 다음과 같은 트릭을 고려할 수 있습니다. 테이블 중 하나의 복제 팩터를 클러스터의 노드 수에 가깝거나 같은 수로 늘리십시오. 결과적으로-결합 프로세스 동안 필요한 데이터는 거의 항상 (또는 항상) 필요한 노드에 존재합니다.

  2. from https://stackoverflow.com/questions/6953383/is-a-collocated-join-a-la-netezza-theoretically-possible-in-hive by cc-by-sa and MIT license