Redshift Spectrum 을 이용하여 S3 에 compression 형태로 data 저장하기

3 minuti di lettura
Livello di contenuto: Intermedio
0

S3 에 compression 형태로 data 파일을 저장 및 unload 하는 방법 가이드 입니다.

Amazon Redshift Spectrum을 사용하면 데이터를 Amazon Redshift 테이블에 로드하지 않고도 Amazon S3의 파일에서 정형 및 비정형 데이터를 효율적으로 쿼리하고 가져올 수 있습니다. Redshift Spectrum 쿼리는 대량 병렬 처리를 채택해 큰 데이터 집합에 대해 매우 빠르게 실행됩니다. 대부분의 처리가 Redshift Spectrum 계층에서 이루어지며, 데이터가 대부분 Amazon S3에 그대로 남습니다.

Amazon Redshift Spectrum에서 쿼리에 사용하는 데이터 파일은 일반적으로 다른 애플리케이션에 사용하는 것과 파일 형식이 동일합니다. 예를 들어 Amazon Athena, Amazon EMR 및 Amazon QuickSight에서 동일한 형식의 파일이 사용됩니다. Amazon S3에서 직접 원본 형식으로 데이터를 쿼리할 수 있습니다. 이렇게 하려면 데이터 파일이 Redshift Spectrum에서 지원하는 형식이어야 하고 클러스터가 액세스할 수 있는 Amazon S3 버킷에 있어야 합니다.

이 때 데이터 파일의 스토리지 공간을 줄이고 성능을 높이며 비용을 최소화하려면 데이터 파일을 압축하는 것이 좋습니다. Redshift Spectrum은 파일 확장자를 토대로 파일 압축 형식을 인식하며, Redshift Spectrum이 지원하는 압축 형식과 확장자는 다음과 같습니다.

압축 알고리즘파일 확장명병렬 읽기 지원
Gzip.gz아니요
Bzip2.bz2
Snappy.snappy아니요

사전 준비

1단계. IAM 역할 생성

2단계: IAM 역할을 클러스터와 연결

3단계: 외부 스키마와 외부 테이블 생성

(옵션) 4단계: Amazon S3에서 데이터 쿼리

data file 을 압축하여 S3에 저장하기

SVV_TABLE_INFO 시스템 테이블을 이용해 테이블 사이즈를 확인합니다.
select * from SVV_TABLE_INFO ;

size 컬럼을 통해 테이블 크기를 보여주며, 1MB 데이터 블록 단위로 확인할 수 있습니다.

[ 압축없이 text file 을 S3 에 load ]

create external table spectrum_db.listing_s3text 
stored as TEXTFILE location 's3://***/text_table/' 
as select * from listing ; 

S3 file size 결과 : 여기에 이미지 설명 입력 2.7 MB 파일 4건

[ Snappy 방식으로 압축 ]

3 단계에서 생성한 외부 스키마를 통해서 아래와 같이 생성합니다.

create external table spectrum_db.listing_snappy
stored as parquet
location 's3://***/parquet_snappy/'
TABLE PROPERTIES ('compression_type'='snappy')
as select * from listing ;

S3 file size 결과 : 여기에 이미지 설명 입력 1.2 MB 파일 4건

[ Gzip 방식으로 압축 ]

 create external table spectrum_db.listing_gzip 
 stored as TEXTFILE 
 location 's3://***/txt_gzip/' 
 TABLE PROPERTIES ('compression_type'='gzip') 
 as select * from listing ; 

S3 file size 결과 : 여기에 이미지 설명 입력 1.1 MB 파일 4건

[ Bzip2 방식으로 압축 ]

create external table spectrum_db.listing_bzip2
stored as TEXTFILE
location 's3://***/txt_bzip2/' 
TABLE PROPERTIES ('compression_type'='bzip') 
as select * from listing ; 

S3 file size 결과 : 여기에 이미지 설명 입력 약 760 KB 파일 4건

마무리

  • Redshift Spectrum 을 이용하여 S3 에 compression 형태로 data 저장하는 방법을 살펴보았습니다.
  • 위 글은 특정 압축 방식 성능이 뛰어나다는 것을 의미하는 글이 아니며, 압축률은 데이터에 따라 달라질 수 있습니다.
  • Snappy 압축 방식은 Parquet 파일 형식에 사용 가능하며, Gzip과 Bzip2 는 TextFile 파일 형식에 사용 가능합니다.
  • redshift 는 노드 수를 기반으로 스펙트럼 리소스가 할당되기 때문에 일관된 성능을 제공하기 위해 compute node 수 만큼 파일 개수가 생성됩니다.

Redshift spectrum의 데이터 형식 압축 형식에 대한 자세한 내용은 Amazon Redshift Spectrum에서 쿼리용 데이터 파일 생성 문서를 참조하세요.

AWS
TECNICO DI SUPPORTO
pubblicato 8 mesi fa510 visualizzazioni