Amazon Athena 쿼리 출력을 CSV가 아닌 다른 형식(예: 압축 형식)으로 저장하려면 어떻게 해야 하나요?

2분 분량
0

Amazon Athena 쿼리 결과를 CSV 이외의 형식(예: JSON 또는 압축 형식)으로 저장하려고 합니다.

해결 방법

Athena는 CSV 출력 파일만 지원합니다. UNLOAD 쿼리는 SELECT 문의 쿼리 결과를 지정된 데이터 형식으로 씁니다. UNLOAD에 지원되는 형식으로는 Apache Parquet, ORC, Apache Avro 및 JSON이 있습니다. CSV는 Athena SELECT 쿼리에서 사용하는 유일한 출력 형식이지만 UNLOAD를 사용하여 SELECT 쿼리의 출력을 UNLOAD가 지원하는 형식으로 쓸 수 있습니다. CTAS 문을 사용하여 CSV 이외의 형식으로 데이터를 출력할 수 있지만 이러한 문을 사용하려면 Athena에서 테이블을 만들어야 합니다. UNLOAD 문은 SELECT 쿼리의 결과를 CSV 형식이 아닌 형식으로 출력하려고 하지만 연결된 테이블이 필요하지 않은 경우에 유용합니다. 예를 들어 다운스트림 애플리케이션에서는 SELECT 쿼리의 결과가 JSON 형식이어야 할 수 있으며, SELECT 쿼리의 결과를 추가 분석에 사용하려는 경우 Parquet 또는 ORC가 CSV보다 성능 이점을 제공할 수 있습니다.

쿼리 출력 파일을 다른 형식으로 저장하려면 CREATE TABLE AS SELECT(CTAS) 쿼리를 사용하고 형식 속성을 구성합니다. 쿼리가 완료되면 CTAS 테이블을 삭제합니다. 다음 사항에 유의하십시오.

  • 형식을 ORC, PARQUET, AVRO, JSON 또는 TEXTFILE로 설정할 수 있습니다. CTAS 쿼리 형식을 지정하지 않으면 Athena는 기본적으로 Parquet을 사용합니다.
  • 파라미터의 이름, format은 소문자로 나열되어야 합니다. 그렇지 않으면 CTAS 쿼리에 실패합니다. 예제는 예: 다른 형식으로 쿼리 결과 작성을 참조하십시오.
  • 기본적으로 모든 CTAS 쿼리는 GZIP 압축을 사용합니다. Parquet 및 ORC의 경우 parquet_compressionorc_compression 옵션을 사용하여 SNAPPY 같은 다른 압축 유형을 지정할 수 있습니다. 예제는 예: 데이터 스토리지 및 압축 형식 지정을 참조하십시오.
  • 텍스트 기반 형식의 경우 **WITH(field_delimiter = ',')**와 같이 field_delimiter를 지정할 수 있습니다. 필드 구분 기호를 지정하지 않으면 Athena는 기본적으로 \001을 사용합니다.
  • CTAS 쿼리에서 external_location 파라미터를 사용하는 경우 Amazon Simple Storage Service(Amazon S3) 위치에 데이터가 없는지 확인합니다. 그렇지 않으면 "HIVE_PATH_ALREADY_EXISTS: Target directory for table 'table_name' already exists: s3://AWSDOC-EXAMPLE-BUCKET"과 같은 오류가 표시될 수 있습니다. external_location 파라미터에 대한 자세한 내용은 CTAS 테이블 속성을 참조하십시오.

관련 정보

CTAS 쿼리에 대한 고려 사항 및 제한 사항

AWS 공식
AWS 공식업데이트됨 2년 전