Hive는 TextFile, SequenceFile, RcFile, OrcFile, ParquetFile 포맷을 지원한다.
테이블의 파일형식을 지원하는 방법은 아래와 같다.
1. CREATE TABLE … STORE AS <File_Format>
2. ALTER TABLE … [PARTITION partition_spec] SET FILEFORMAT <File_Format>
3. SET hive.default.fileformat=<File_Format> (the default fileformat for table)
[1] File Compress
Hive의 압축은 Full압축이 아닌 중간파일압축(Intermediate compression)을 통해
매퍼와 리듀스 사이의 데이터전송량을 현저하게 줄인다.
Hive가 생산한 중간파일을 여러 맵리듀스 작업간에 압축하려면
SET hive.exec.compress를 설정해야한다. (Default는 false)
- Deflate - org.apache.hadoop.io.compress.DefaultCodec
- GZip - org.apache.hadoop.io.compress.GzipCodec
- Bzip2 - org.apache.hadoop.io.compress.BZip2Codec
- LZO - com.hadoop.compression.lzo.LzopCodec
- LZ4 - org.apache.hadoop.io.compress.Lz4Codec
- Snappy - org.apache.hadoop.io.compress.SnappyCodec
중간파일 압축은 다중 맵과 리듀스를 사용하는 특정 job의 디스크 공간만 절약하며 예시는 아래와 같다.
ex)
SET hive.exec.compress.output=true
SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec
set the following properties in mapred-site.xml:
For MRv1:
<property>
<name>mapred.compress.map.output</name>
<value>true</value>
</property>
<property>
<name>mapred.map.output.compression.codec</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>
For YARN:
<property>
<name>mapreduce.map.output.compress</name>
<value>true</value>
</property>
<property>
<name>mapred.map.output.compress.codec</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>
ORC or Parquet파일 사용시
1.
SET parquet.compression=GZIP
SET parquet.compression=SNAPPY
2.
create table ...
tblproperties ("orc.compress"="SNAPPY")
tblproperties ("parquet.compress"="SNAPPY")
[2] Hot data
자주 쓰거나 스캔하는 데이터는 hdfs shell명령어로 hot data로 지정할 수 있다.
hot data에 대한 데이터 복제팩터를 증가시키면 hive작업에 의해 참조할 가능성이 증가하고 쿼리성능이 향상될 수 있다.
경로가 디렉토리일 경우 디렉토리 아래에 있는 모든 파일의 복제팩터를 증가시킨다.
setrep
Usage: hdfs dfs -setrep [-R] [-w] <numReplicas> <path>
Changes the replication factor of a file. If path is a directory then the command recursively changes the replication factor of all files under the directory tree rooted at path.
Options:
- The -w flag requests that the command wait for the replication to complete. This can potentially take a very long time.
- The -R flag is accepted for backwards compatibility. It has no effect.
Example:
hdfs dfs -setrep -w 3 /user/hadoop/dir1
Exit Code:
Returns 0 on success and -1 on error.
참조 :
'DataPipeline > Hive' 카테고리의 다른 글
| Apache Hive - Json 컨트롤 (0) | 2023.03.21 |
|---|---|
| Apache Hive - 조인 (Join) (0) | 2023.03.20 |
| Apache Hive - 파일 병합 (File Merge) (0) | 2023.03.20 |
| Apache Hive - CDH Hive 환경설정 최적화 (0) | 2023.03.15 |
| Apache Hive - 쿼리 퍼포먼스를 높이는 방법 (0) | 2023.03.15 |