2012-07-23 4 views
1

hadoop 클러스터에 상당히 큰 하이브 테이블 (~ 200 억 레코드)이 있습니다. 여러 조인을해야합니다.하이브로 인덱싱

키에 대해이 테이블을 인덱싱 할 수 있습니까? 예를 들어, 표 3테이블 테이블 이름은 내가 여러가 표 2 조인을 수행하려는 경우 열에 4 이 작업을 수행하는 가장 효율적인 방법 일 것입니다 무슨 키 ?

관련 테이블 2-4은 상대적으로 매우 작은 경우 (~ 1 억 각)은 표 1에 매우 높은 선택성이있는 경우에만 색인이 경우에 도움이 될 것입니다

답변

1

이럴. 테이블 1의 심각한 부분 (나는 1 ~ 5 % 이상 추측 할 것임)이 조인의 결과가 될 경우 인덱스가 효과적이지 않을 것입니다. 그 이유는 어떤 경우에도 모든 페이지/블록을 읽어야하기 때문입니다.
하이브는 한 테이블이 작다고 결정할 수 있으며, 각 매퍼에서 메모리 해시 테이블과 같이 사용하여 셔플없이 결합을 수행합니다. 하이브는 파티션 정보를 사용하여 조인 일반적인 할 수 있는지 확실하지 않다 https://issues.apache.org/jira/browse/HIVE-917
: https://issues.apache.org/jira/browse/HIVE-195
당신은 또한 당신의 테이블이 mapjoin의 경우 분할되어 있다는 사실에서 개선을 얻을 수 있습니다.