SW Engineering/Hadoop

Hive 파일 압축

SungWookKang 2020. 2. 7. 01:01
반응형

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 org.apache.hadoop.io.compress.Lz4Codec

·       org.apache.hadoop.io.compress.GzipCodec

·       org.apache.hadoop.io.compress.DefaultCodec

·       org.apache.hadoop.io.compress.BZip2Codec

·       org.apache.hadoop.io.compress.SnappyCodec

·       com.hadoop.compression.lzo.LzoCodec

·       com.hadoop.compression.lzo.LzopCodec

 

압축 하기 위해서는 io.compression.codecs 설정에 압축 포맷이 명시되어 있어야 한다.

<property>

              <name>hive.exec.compress.intermediate</name>

              <value>true</value>

</property>

 

<property>

              <name>hive.exec.compress.output</name>

              <value>true</value>

</property>

 

<property>

              <name>mapred.map.output.compression.codec</name>

               <value>com.hadoop.compression.fourmc.FourMCHighCodec</value>

</property>

 

압축을 사용하기 위해서는 쿼리를 실행 하기전 처리 결과를 압축하기위한 설정과 코덱을 명시해야한다.

set hive.exec.compress.output=true;

set mapreduce.output.fileoutputformat.compress=true;

set mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.BZip2Codec;

 

아래 스크립트는 Gzip으로 압축한다. 압축파일은 지정한 경로에 생성되며 파일 개수는 매퍼와 리듀서의 개수만큼 생성된다.

set hive.exec.compress.output=true;

set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;

 

--table 내용을 /user/tables/ 경로에 CSV 형태로 압축 저장

INSERT OVERWRITE DIRECTORY 'hdfs:///user/tables/'

ROW FORMAT DELIMITED FIELDS TERMINATED BY ','

SELECT *

  FROM table

;

 

--table 내용을 temp_table 테이블에 저장

CREATE TABLE csvsample

ROW FORMAT DELIMITED FIELDS TERMINATED BY ','

LOCATION '/user/csv/'

AS

SELECT *

  FROM table

;

 

Hive에서압축 코덱을 사용하면 디스크 소비를 줄이면서 쿼리의 전체 시간 간격을 축소 있다.

 

[참고자료]

·       https://acadgild.com/blog/hive-compression-codecs

·       https://cwiki.apache.org/confluence/display/Hive/CompressedStorage

·       https://cwiki.apache.org/confluence/display/Hive/FileFormats

 

 

 

2020-02-06 / Sungwook Kang / http://sungwookkang.com

 

Hadoop, Big Data, 하둡, 빅데이터, 데이터분석,  Hive, Hive 쿼리, Hive Query, 하이브 파일 압축, Hive File compression

반응형

'SW Engineering > Hadoop' 카테고리의 다른 글

HUE에서 10만행이상 브라우저에 출력하기  (0) 2020.02.19
Hive 쿼리 - not like  (0) 2020.02.13
Hive 파일 Merge  (0) 2020.02.04
Hive 통계 정보  (0) 2020.01.29
Hive 쿼리 실행계획 보기  (0) 2020.01.17