2014-04-20 3 views
1

HDFS 싱크에 5GB의 데이터가 있습니다. 하이브에 대한 쿼리를 실행하면 완료하는 데 10-15 분 이상 걸립니다. 실행했을 때 얻을 수있는 행 수아파치 하이브 성능 향상

select count(*) from table_name 

은 3,880,900입니다. 내 VM은 4.5GB의 mem를 가지고 있으며 MBP 2012에서 실행됩니다. 테이블에서 색인을 생성하면 성능이 향상되는지 알고 싶습니다. 하이브에게 많은 양의 데이터 나 행만 사용하여 결과를 더 빨리 얻도록 지시하는 다른 방법이 있습니까? 결과를 엿볼 수 있도록 데이터의 하위 집합에 대해 쿼리를 실행하더라도 괜찮습니다.

답변

0

예, 색인 생성이 도움이됩니다. 그러나 데이터의 하위 집합 (한도 사용)을 얻는 것은 출력을 제한하기 전에 하이브가 전체 데이터를 여전히 스캔하므로 실제로 도움이되지 않습니다.

빠른 결과를 얻으려면 RCFile/ORC 파일 형식을 사용해보십시오. 내 실험에서 RCFile 기반 테이블은 텍스트 파일/시퀀스 파일 기반 테이블보다 대략 10 배 빠른 쿼리를 실행했습니다.

0

쿼리하는 데이터에 따라 ORC, 파르 케 같은 다양한 파일 형식을 사용하여 이득을 얻을 수 있습니다. 어떤 유형의 데이터를 쿼리하고 있습니까? 구조화되었거나 구조화되지 않은 데이터입니까? 어떤 종류의 쿼리를 수행하려고합니까? 당신은 InfiniDB, 프레스토, 임팔라 등으로 하둡 솔루션에 대한 다른 SQL을 사용하여 이익을 또한 볼 수있는 데이터 ...

를 구성하는 경우 나, InfiniDB 같은 하둡 솔루션에 InfiniDB
에 대한 건축가 http://infinidb.co
SQL입니다 임팔라 (Impala) 및 다른 사람들은 계산, 최적화 등을 수행하는 데이터를 통해 데이터를로드함으로써 데이터를 빠르게 쿼리 할 수 ​​있습니다. 이는 특히 하이브 (Hive)와 비교할 때 대화 형 분석 쿼리에 도움이됩니다.

5GB의 데이터로 작업하고 있지만 (언젠가는 데이터가 늘고 언젠가는 TB가 될 수 있습니다) 꽤 작기 때문에 의도하지 않은 일부 도구의 세계에서 여전히 작업 할 수 있습니다 고성능 쿼리. Hive를 사용하는 가장 좋은 해결책은 데이터가 어떤지보고 ORC 또는 Parquet이 쿼리에 도움이되는지 확인하는 것입니다 (컬럼 형식은 분석 쿼리에 유용합니다).

하이브는 HDFS 데이터에서 SQL 쿼리를 수행 할 때 항상 느린 옵션 중 하나가 될 것입니다. Hortonworks는 Stinger 구상을 통해 더 잘 만들고 있습니다.
http://hortonworks.com/labs/stinger/

0

열의 하위 집합에 관심이있는 경우 Usecase는 ORC, Parquet에 적합합니다. 하이브 0.12가있는 ORC에는 각 열에 대해 저장하는 메타 데이터를 사용하여 쿼리를 실행하는 동안 블록을 삭제하는 데 도움이되는 PPD가 제공됩니다.

우리는 하이브 위에 구현하여 5-6X의 성능 향상을 가져온 ORC 파일의 메타 데이터 인덱스에 블룸 필터를 지원했습니다.

실행하는 쿼리에 대해 시작되는 매퍼/감속기 작업의 평균 수는 얼마입니까? 일부 매개 변수를 조정하면 확실히 도움이 될 수 있습니다.