[HADOOP] 높은 카디널리티 필드에 대한 하이브 쿼리 성능
HADOOP높은 카디널리티 필드에 대한 하이브 쿼리 성능
나는 거의 항상 기본 키 열 (예 : employee_id)로 쿼리되는 하이브에 하나의 거대한 테이블을 가지고 있습니다. 테이블은 정말 거대 할 것이며, 매일 수백만 개의 행이 삽입되며이 필드를 통해 파티션을 사용하여 빠르게 쿼리하려고합니다. 나는이 게시물을 따라 갔고 파티셔닝이 낮은 카디널리티 필드에만 적합하다는 것을 알고 있으므로 employee_id 열로 빠르게 쿼리하는 목표를 어떻게 달성 할 수 있습니까?
매우 높은 카디널리티를 가진 id 컬럼은 버킷으로 사용되어야하지만 하나의 테이블에 대한 쿼리 성능에는 도움이되지 않는다는 것을 이해합니다.
파티션으로 해시 (employee_id)와 같은 것을 사용할 수 있다면 대단히 도움이 될 것이라고 생각합니다. 이것이 가능한가? 하이브에 관한 문서에서 그런 것을 볼 수 없었습니다.
요약하면 원하는 것은 빠른 쿼리 결과입니다.
select * from employee where employee_id=XXX
직원 테이블에는 기본 키 열 employee_id가있는 수십억 개의 레코드가 있다고 가정합니다. 여기서 연도, 월, 일 등의 클래식 파티셔닝은 도움이되지 않습니다.
미리 감사드립니다.
해결법
-
==============================
1.1) 블룸 필터와 함께 ORC 사용 :
1) 블룸 필터와 함께 ORC 사용 :
CREATE TABLE employee ( employee_id bigint, name STRING ) STORED AS ORC TBLPROPERTIES ("orc.bloom.filter.columns"="employee_id") ;
2) 벡터화를 사용하여 PPD를 활성화하고 CBO 및 Tez를 사용합니다.
SET hive.optimize.ppd=true; SET hive.optimize.ppd.storage=true; SET hive.vectorized.execution.enabled=true; SET hive.vectorized.execution.reduce.enabled = true; SET hive.cbo.enable=true; set hive.stats.autogather=true; set hive.compute.query.using.stats=true; set hive.stats.fetch.partition.stats=true; set hive.execution.engine=tez; SET hive.stats.fetch.column.stats=true; SET hive.tez.auto.reducer.parallelism=true;
3) 매퍼 (mappers)와 레 듀서 (reducers)에 대해 적절한 병렬 처리를 조정하십시오.
--example for mappers: set tez.grouping.max-size=67108864; set tez.grouping.min-size=32000000; --example settings for reducers: set hive.exec.reducers.bytes.per.reducer=67108864; --decrease this to increase the number of reducers
이러한 수치를 변경하여 최적의 성능을 얻으십시오.
from https://stackoverflow.com/questions/48295667/hive-query-performance-for-high-cardinality-field by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 돼지 - 발견 된 인터페이스 org.apache.hadoop.mapreduce.JobContext, 그러나 클래스가 예상됩니다. (0) | 2019.05.31 |
---|---|
[HADOOP] hadoop 작업에 외부 항아리를 추가하는 방법? (0) | 2019.05.31 |
[HADOOP] brute force 알고리즘은 확장 할 수 있습니까? (0) | 2019.05.31 |
[HADOOP] Hadoop WordCount 예제가지도에서 멈춤 100 % 감소 0 % (0) | 2019.05.31 |
[HADOOP] spark에서 textinputformat.record.delimiter 설정하기 (0) | 2019.05.31 |