hive 45

Hive 파일 압축

Hive 파일 압축 · Version : Hadoop 3.0.0-cdh6.3.2, Hive 하이브를 이용하여 INSERT DIRECTORY, CTAS문으로 파일을 생성할때, 원하는 타입의 형태로 파일을 압축 할 수 있다. 하이브에서 사용할 수 있는 압축 코덱은 다양하다. · 4mc com.hadoop.compression.fourmc.FourMcCodec · gzip org.apache.hadoop.io.compress.GzipCodec · lzo com.hadoop.compression.lzo.LzopCodec · Snappy org.apache.hadoop.io.compress.SnappyCodec · bzip2 org.apache.hadoop.io.compress.BZip2Codec · lz4 or..

Hive 파일 Merge

Hive 파일 Merge · Version : Hadoop 3.0.0-cdh6.3.2, Hive 하이브에서 매퍼 단독 작업의 경우 파일이 많이 생성될 수 있다. 작은 사이즈의 파일이 많이 생성되면 HDFS에 부담이 될수 있기 때문에 이럴 경우 파일을 Merge 하여 실행하는 것이 좋다. 아래 스크립터는 파일을 Merge 하는 설정이다. -- 맵퍼 단독 작업일 때 머지 set hive.merge.mapfiles=true; -- 맵리듀스 작업일 때 머지 set hive.merge.mapredfiles=true; -- 테즈 작업일 때 머지 set hive.merge.tezfiles=true; --테즈에서 실행하는지 확인 SET hive.execution.engine; --테즈 엔진으로 설정 SET hive.e..

Hive 통계 정보

Hive 통계 정보 · Version : Hadoop 3.0.0-cdh6.3.2, Hive 하이브는 테이블의 로우 수 , 파일 개수, 사이즈 등의 통계 정보를 이용하여 데이터를 빠르게 처리한다. 통계정보는 CBO(Cost Base Optimize) 방식이며, 실행계획 최적화, 단순 카운트 쿼리 등에 사용된다. 하이브는 기본적으로 통계 정보를 자동 수집하도록 되어 있어 따로 설정하지 않아도 테이블의 메타정보에 통계정보를 수집한다. 하지만 사용하는 버전, 제조사에 따라 설정이 다를 수 있으니 반드시 재확인을 할 수 있도록 한다. 통계 정보를 설정하는 옵션은 아래와 같다. set hive.stats.autogather=true; set hive.stats.column.autogather=true; DML을 이..

Hive 쿼리 실행계획 보기

Hive 쿼리 실행계획 보기 · Version : Hadoop 3.0.0-cdh6.3.2, Hive 하이브(Hive)에서 쿼리를 실행할때, 쿼리가 어떤 실행계획으로 결과를 추출했는지 확인하는 방법으로는 explain 또는 explain extended 명령을 사용할 수 있다. EXPLAIN [EXTENDED|AST|DEPENDENCY|AUTHORIZATION|LOCKS|VECTORIZATION|ANALYZE] query · EXTENDED : 추가 정보 확인 · AST : Abstract Syntax Tree 정보 확인 · DEPENDENCY : 테이블간 의존 정보 확인 · AUTHORIZATION : 테이블 조회 권한 정보 확인 · LOCKS : 테이블의 락 정보 확인 · VECTORIZATION : ..

Hive에서 콤마(,)로 컬럼 구분 및 쿼테이션 내부의 콤마(“, , ”) 파싱 스킵하기

Hive에서 콤마(,)로 컬럼 구분 및 쿼테이션 내부의 콤마(“, , ”) 파싱 스킵하기 · Version : Hadoop 3.0.0-cdh6.3.2 Hive 테이블에서 데이터를 로드할때, 특정 구분자를 이용해서 파싱하는 경우 파싱의 규칙을 미리 테이블을 생성할때 정의해야 한다. 아래 스크립트는 콤마(,)로 컬럼을 구분하는 데이터에서 파싱을 하지 않아야 하는 콤마(,)의 데이터는 더블 쿼테이션(“”)으로 감싸서 해당 문장이 파싱되지 않도록 하는 규칙이다. 예를 들어 아래와 같은 콤마로 구분된 텍스트 데이터가 있다고 할 때, 컬럼 Col_1, Col_2, Col_3로 파싱한다. col_1,col_2,"col_3(a=3&b=40&c=NOTES&cid=1,10,33)" create table tbl_a ( c..

Hive Buckets (버켓)

Hive Buckets (버켓) · Version : Hadoop 3.0.0-cdh6.3.2, Hive 하이브는 쿼리 성능을 높이기 위해 버켓(Buckets)이라는 데이터 모델을 제공하며, 버켓은 지정된 칼럼의 값을 해쉬 처리하고 지정한 수의 파일로 나누어 저장한다. 조인에 사용되는 키로 버켓 컬럼을 생성하면 필요한 버켓만 조회하면 되기 때문에 전제 디렉터리를 풀스캔하는 것보다 훨씬 빠르게 처리할 수 있다. 파티션은 데이터를 디렉터리로 나누어 저장하는 방식이며 버켓은 데이터를 파일별로 나누어 저장한다. 아래 그림은 파티션과 버켓의 차이점을 쉽게 정의하고 있다. 아래 스크립트는 버켓 테이블을 생성한다. -- col2를 버켓팅하여 20개의 파일에 저장 CREATE TABLE tbl1( col1 STRING,..

Hive Skewed (스큐)

Hive Skewed (스큐) · Version : Hadoop 3.0.0-cdh6.3.2, Hive 스큐(skewed)의 사전적 의미는 “비스듬하다”라는 뜻으로, 특정 데이터가 많이 입력되는 경우, 데이터 파일 한쪽에만 너무 많은 데이터가 쌓이는 것을 의미한다. 하이브에서 스큐 테이블로 생성하면 따로 파일을 만들어서 사용하므로 성능상 이점이 있다. 스큐는 파티션과 유사하지만 용도가 조금 다르다. 파티션은 크게 데이터를 분류하는 용도로 사용되며, 스큐는 컬럼의 데이터를 구분할 때 사용된다. 하이브 매뉴얼에는 아래와 같은 내용이 있다. 스큐 테이블은 스큐의 정보를 저장하고, 리스트 버켓팅까지 추가하면 스큐된 서브 디렉터리를 생성한다. Skewed Table vs. List Bucketing Table · ..

Hive Meta Database

Hive Meta Database · Version : Hadoop 3.0.0-cdh6.3.2, Hive 하이브(Hive)의 메타정보는 파일의 물리적인 위치 및 데이터에 대한 디렉터리 정보를 저장를 데이터베이스에 저장하며 기본적으로 사용되는 데이터베이스로는 더비(Derby), MySQL, Oracle, PostgreSQL이 있다. 하이브 클라이언트를 이용해서 확인하는 정보는 메타 데이터베이스 정보에 기반하고 있으며, 각 테이블 관련 정보는 메타 데이터베이스에서 직접 쿼리하여 확인이 가능하다. · Hive Architecture : http://sqlmvp.kr/221718439399 hive메타 데이터베이스가 설치된 DB에 접속하여 테이블 목록을 살펴보면 매우 많은 테이블이 있는 것을 확인할 수 있다. ..

Hive Meta Store 설정

Hive Meta Store 설정 · Version : Hadoop 3.0.0-cdh6.3.2, Hive 하이브(Hive)의 메타정보는 파일의 물리적인 위치 및 데이터에 대한 디렉터리 정보를 저장하고 있다. 메타스토어는 쓰리프트(Thrift) 프로토콜을 사용하여 다른 서비스에 정보를 제공한다. 메타 정보는 JDBC 드라이버를 이용하여 RDBMS에 저장한다. 메타스토어는 3가지 타입(Embedded, Local, Remote)이 있으며 타입에 대한 특징은 아래 링크를 참고 한다. · Hive Architecture : http://sqlmvp.kr/221718439399 [Embedded Meta Store] 하이브 기본설정은 더비DB를 사용하며, 이 DB는 한명의 사용자만 접근할수 있어 실제 서비스에는 ..

MapReduce 메모리 부족으로 인한 쿼리 실패

MapReduce 메모리 부족으로 인한 쿼리 실패 - FAILED Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask · Version : Hadoop 3.0.0-cdh6.3.2, Hive Hue에서 Hive 로 결과셋이 큰 쿼리를 실행하였을때 아래와 같은 오류가 발생하였다. Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask 위의 에러로그는 실제 에러로그가 아니기 때문에 문제를 해결하기 위해서는 실제 에러로그를 살펴보아야 한다. 필자의 경우 Ha..