2013-09-23 3 views
2

에 의해 배포되는 이 하이브에 실제로 어떤 영향을 미치는지에 대해 설명하거나 제공 해주시겠습니까? 어떻게 파일을 특정 감속기로 보내도록 제어 할 수 있습니까 ??하이브의 분산 절

답변

14

DISTRIBUTE BY는지도 출력을 축소 기에서 나누는 방법을 제어합니다. 기본적으로 MapReduce는 매퍼가 출력하는 키에 해시를 계산하고 해시 값을 사용하여 사용 가능한 축소 자간에 키 - 값 쌍을 균등하게 분배하려고 시도합니다. 열의 각 값에 대한 데이터를 함께 캡처하려고한다고 가정 해보십시오. 우리는 DISTRIBUTE BY를 사용하여 각각에 대한 레코드가 동일한 감속기로 이동하도록 할 수 있습니다. DISTRIBUTE BY는 감속기가 처리를 위해 행을 수신하는 방법을 제어한다는 점에서 GROUP BY와 유사하게 작동합니다. Hive는 DISTRIBUTE BY 절이 SORT BY 절 앞에 오면 동일한 쿼리에 포함되도록 요구합니다.

+0

을 참조하십시오. MAP-REDUCE는 여전히 모든 그룹 별 열이 동일한 감속기로가는 지 확인한 다음 '배포 기준'을 사용하는 이유는 무엇입니까? – zinking

0

공식 문서 here을 사용할 수 있습니다.

3

DISTRIBUTE BY은 메모리 집약적 인 작업을 할 때 메모리를 덜 사용하고 Hadoop이 Map-only 작업 대신 Reducer를 사용하도록하는 좋은 방법입니다. 기본적으로 Mappers는 DISTRIBUTE BY 열을 기반으로 행을 그룹화합니다. 이로 인해 프레임 워크가 전체적으로 작업량을 줄이고이 집계를 Reducers에 전달합니다.

배포자를 사용하지 않고 집계를 수행하는 경우 https://cwiki.apache.org/confluence/display/Hive/Tutorial#Tutorial-Dynamic-PartitionInsert