Amazon Redshift Spectrum의 쿼리용 데이터 파일
이 섹션에서는 Redshift Spectrum이 지원하는 형식으로 Amazon S3의 데이터 파일을 생성하는 방법에 대해 설명합니다.
Amazon Redshift Spectrum에서 쿼리에 사용하는 데이터 파일은 일반적으로 다른 애플리케이션에 사용하는 것과 파일 형식이 동일합니다. 예를 들어 Amazon Athena, Amazon EMR 및 Amazon QuickSight에서 동일한 형식의 파일이 사용됩니다. Amazon S3에서 직접 원본 형식으로 데이터를 쿼리할 수 있습니다. 이렇게 하려면 데이터 파일이 Redshift Spectrum에서 지원하는 형식이어야 하고 클러스터가 액세스할 수 있는 Amazon S3 버킷에 있어야 합니다.
데이터 파일이 있는 Amazon S3 버킷과 Amazon Redshift 클러스터가 동일한 AWS 리전에 있어야 합니다. 지원되는 AWS 리전에 대한 자세한 내용은 Amazon Redshift Spectrum 리전 섹션을 참조하세요.
Redshift Spectrum의 데이터 형식
Redshift Spectrum은 다음과 같은 정형 및 비정형 데이터 형식을 지원합니다.
파일 형식 | 열 기반 | 병렬 읽기 지원 | 분할 단위 |
---|---|---|---|
PARQUET | 예 | 예 | 행 그룹 |
ORC | 예 | 예 | Stripe |
RCFile | 예 | 예 | 행 그룹 |
TextFile | 아니요 | 예 | 열 |
SequenceFile | 아니요 | 예 | 행 또는 블록 |
RegexSerde | 아니요 | 예 | 열 |
OpenCSV | 아니요 | 예 | 열 |
AVRO | 아니요 | 예 | 차단 |
Ion | 아니요 | 아니요 | N/A |
JSON | 아니요 | 아니요 | N/A |
위 표에서 머리글은 다음을 나타냅니다.
-
열 기반 – 파일 형식이 행 지향 구조가 아닌 열 지향 구조에 데이터를 물리적으로 저장하는지 여부입니다.
-
병렬 읽기 지원 – 파일 형식이 파일 내의 개별 블록 읽기를 지원하는지 여부입니다. 개별 블록을 읽으면 단일 요청으로 전체 파일을 읽을 필요 없이 여러 독립적인 Redshift Spectrum 요청에 걸쳐 파일을 배포하여 처리할 수 있습니다.
-
분할 단위 – 병렬로 읽을 수 있는 파일 형식의 경우 분할 단위는 단일 Redshift Spectrum 요청에서 처리할 수 있는 가장 작은 데이터 청크입니다.
참고
타임스탬프 값
yyyy-MM-dd HH:mm:ss.SSSSSS
에서 볼 수 있듯이, 텍스트 파일의 타임스탬프 값은2017-05-01 11:30:59.000000
형식이어야 합니다.Apache Parquet 같은 열 기반 스토리지 파일 형식을 사용하는 것이 좋습니다. 열 기반 스토리지 파일 형식의 경우 필요한 열만 선택하여 Amazon S3로부터의 데이터 전송을 최소화할 수 있습니다.
Redshift Spectrum의 압축 형식
스토리지 공간을 줄이고 성능을 높이며 비용을 최소화하려면 데이터 파일을 압축하는 것이 좋습니다. Redshift Spectrum은 파일 확장자를 토대로 파일 압축 형식을 인식합니다.
Redshift Spectrum이 지원하는 압축 형식과 확장자는 다음과 같습니다.
압축 알고리즘 | 파일 확장명 | 병렬 읽기 지원 |
---|---|---|
Gzip | .gz | 아니요 |
Bzip2 | .bz2 | 예 |
Snappy | .snappy | 아니요 |
여러 레벨에서 압축을 적용할 수 있습니다. 일반적으로 전체 파일을 압축하거나 파일 내의 개별 블록을 압축합니다. 파일 수준에서 열 형식을 압축해도 성능상의 이점이 없습니다.
Redshift Spectrum에서 파일을 병렬로 읽을 수 있으려면 다음을 충족해야 합니다.
-
파일 형식이 병렬 읽기를 지원합니다.
-
파일 레벨 압축(있는 경우)이 병렬 읽기를 지원합니다.
각 분할 단위가 단일 Redshift Spectrum 요청으로 처리되기 때문에 파일 내의 개별 분할 단위가 병렬로 읽을 수 있는 압축 알고리즘을 사용하여 압축되는지 여부는 중요하지 않습니다. 이 예로는 Snappy 압축 Parquet 파일이 있습니다. Parquet 파일 내의 개별 행 그룹은 Snappy를 사용하여 압축되지만 파일의 최상위 구조는 압축되지 않은 상태로 유지됩니다. 이 경우 각 Redshift Spectrum 요청이 Amazon S3에서 개별 행 그룹을 읽고 처리할 수 있기 때문에 파일을 병렬로 읽을 수 있습니다.
Redshift Spectrum의 암호화
Redshift Spectrum은 다음 암호화 옵션을 사용하여 암호화된 데이터 파일을 투명하게 해독합니다.
-
Amazon S3가 관리하는 AES-256 암호화 키를 사용하는 서버 측 암호화(SSE-S3).
-
AWS Key Management Service(SSE-KMS)에서 관리하는 키로 서버 측 암호화.
Redshift Spectrum은 Amazon S3 클라이언트 측 암호화는 지원하지 않습니다. 자세한 내용은 Amazon Simple Storage Service 사용 설명서의 서버 측 암호화를 사용하여 데이터 보호를 참조하세요.
Amazon Redshift는 대량 병렬 처리(MPP)를 사용하여 대량의 데이터에서 작동하는 복잡한 쿼리를 빠르게 실행할 수 있습니다. Redshift Spectrum은 같은 원칙을 외부 데이터 쿼리에도 확장하여 파일을 스캔하는 데 필요한 경우, 여러 개의 Redshift Spectrum 인스턴스를 사용합니다. 각 테이블별로 별도의 폴더에 파일을 넣습니다.
다음을 수행하여 데이터를 병렬 처리에 적합하게 최적화할 수 있습니다.
-
파일 형식이나 압축이 병렬로 읽기를 지원하지 않으면 큰 파일을 여러 개의 작은 파일로 나눕니다. 64MB~1GB의 파일 크기를 사용하는 것이 좋습니다.
-
모든 파일의 크기를 거의 비슷하게 유지합니다. 다른 파일보다 훨씬 큰 파일이 있는 경우, Redshift Spectrum이 워크로드를 고르게 분산시킬 수 없습니다.