2014-09-18 4 views
0

스키마를 디자인 할 때 인터뷰에서 질문에 직면했습니다. 하지만 의심의 여지가 하이브에있는 스키마를 설계하는 동안, 우리는 정규화 과정을 따르거나 필요하지 않습니다 ?? 제발 이해 도와주세요하이브의 스키마 정규화

답변

1

하이브로 데이터를 비정규 화하는 것이 좋습니다.

조인에는 감속기가 필요하며 데이터가 셔플 단계에서 정렬되었음을 의미합니다. 조인 된 테이블에서 필드를 필터링해야하는 경우 하나의 맵, 하나의 임의 재생, 하나의 축소 (조인의 경우) 및 필터의 다른 맵이 필요합니다. (하나 하나하지 않는 한 표는 매퍼 메모리에 들어갈만큼 작은 - 기본적으로 10M 바이트)

지도 (읽기) -> 임의 재생 (종류) -> 감소 (가입) ->지도 (필터) -> 축소 (쓰기)

비정규 화 테이블에있는 필드의 필터링은 맵 스테이지에서 수행됩니다.

지도 (+ 필터를 읽기) -> 임의 재생 (종류) -> 감소 (쓰기)

당신은 몇 가지를 sotre 고급 스토리지 포맷 (ORCfile, 마루, ...)을 사용하여 더 나은 성능을 얻을 수 있습니다 필터 단계에서 블록을 건너 뛸 수 있도록 데이터와 메타 데이터는, 그 대답은 당신이지도-감소 하이브 엔진을 사용하는 경우에만 유효합니다


(술어 저장 층을 아래로 누릅니다). Hive (Tez, Spark, ...) 또는 다른 SQL-in-Hadoop 소프트웨어 (Impal, Drill, ...)에 다른 엔진을 사용하면 다른 동작을 볼 수 있습니다.

조인에 대한 자세한 내용은 Hive manual page

입니다.