Athena에서 압축 사용 - Amazon Athena

Athena에서 압축 사용

Athena는 여러 압축 형식을 사용하는 테이블에서 데이터를 읽는 것을 비롯하여, 데이터 읽기 및 쓰기를 위한 다양한 압축 형식을 지원합니다. 예를 들어 Athena는 일부 Parquet 파일이 Snappy로 압축되고 다른 Parquet 파일이 GZIP으로 압축된 경우 Parquet 파일 형식을 사용하는 테이블의 데이터를 성공적으로 읽을 수 있습니다. ORC, 텍스트 파일, JSON 스토리지 형식에도 동일한 원칙이 적용됩니다.

Athena는 다음 압축 형식을 지원합니다.

  • BZIP2 – Burrows-Wheeler 알고리즘을 사용하는 형식입니다.

  • DEFLATE - LZSSHuffman 코딩을 기반으로 한 압축 알고리즘입니다. Deflate는 Avro 파일 형식에만 해당됩니다.

  • GZIP - Deflate를 기반으로 한 압축 알고리즘입니다. Athena 엔진 버전 2 및 3의 Hive 테이블과 Athena 엔진 버전 2의 Iceberg 테이블의 경우 GZIP은 Parquet 및 텍스트 파일 스토리지 형식의 파일에 대한 기본 쓰기 압축 형식입니다. tar.gz 형식의 파일은 지원되지 않습니다.

  • LZ4 - Lempel-Ziv 77(LZ7) 패밀리의 이 멤버도 최대 데이터 압축이 아닌 압축 및 압축 해제 속도에 중점을 둡니다. LZ4에는 다음과 같은 프레이밍 형식이 있습니다.

    • LZ4 Raw/Unframed – LZ4 블록 압축 형식의 프레이밍되지 않은 표준 구현입니다. 자세한 내용은 GitHub에서 LZ4 블록 형식 설명을 참조하세요.

    • LZ4 framed - LZ4의 일반적인 프레이밍 구현입니다. 자세한 내용은 GitHub에서 LZ4 프레임 형식 설명을 참조하세요.

    • LZ4 hadoop-compatible - LZ4의 Apache Hadoop 구현입니다. 이 구현은 LZ4 압축을 BlockCompressorStream.java 클래스로 래핑합니다.

  • LZO - 최대 데이터 압축이 아닌 높은 압축 및 압축 해제 속도에 중점을 둔 Lempel–Ziv–Oberhumer 알고리즘을 사용하는 형식입니다. LZO에는 두 가지 구현이 있습니다.

    • Standard LZO - 자세한 내용은 Oberhumer 웹 사이트에서 LZO 요약을 참조하세요.

    • LZO hadoop-compatible - 이 구현은 LZO 알고리즘을 BlockCompressorStream.java 클래스로 래핑합니다.

  • SNAPPY – Lempel-Ziv 77 (LZ7) 패밀리의 일부인 압축 알고리즘입니다. Snappy는 데이터를 최대한 압축하는 것이 아니라, 높은 압축 및 압축 해제 속도에 중점을 둡니다.

  • ZLIB - Deflate를 기반으로 한 ZLIB는 ORC 데이터 스토리지 형식의 파일에 대한 기본 쓰기 압축 형식입니다. 자세한 내용은 GitHub에서 zlib 페이지를 참조하세요.

  • ZSTD - Zstandard 실시간 데이터 압축 알고리즘은 높은 압축비를 제공하는 빠른 압축 알고리즘입니다. Zstandard(ZSTD) 라이브러리는 BSD 라이선스를 사용하는 오픈 소스 소프트웨어로 제공됩니다. ZSTD는 Iceberg 테이블의 기본 압축입니다. ZSTD 압축 데이터를 작성할 때 Athena는 기본적으로 ZSTD 압축 수준 3을 사용합니다. Athena의 ZSTD 압축 수준 사용에 대한 자세한 내용은 ZSTD 압축 수준 사용 섹션을 참조하세요.

참고

Athena는 LZ4 또는 LZO 형식으로 압축된 Parquet 파일 쓰기를 지원하지 않습니다. 이러한 압축 형식에 대한 읽기는 계속 지원됩니다.

압축 형식 지정

CREATE TABLE 또는 CTAS 문을 작성할 때, Athena가 해당 테이블에 쓸 경우 사용할 압축 유형을 지정하는 압축 속성을 지정할 수 있습니다.

압축 안 함 지정

CREATE TABLE 문은 압축되지 않은 파일을 지원합니다. 압축되지 않은 파일을 작성하려면 다음 구문을 사용합니다.

  • 테이블 만들기(텍스트 파일 또는 JSON) —TBLPROPERTIES를 지정합니다.write.compression = NONE.

  • 테이블 만들기(Parquet) —parquet.compression = UNCOMPRESSED에서 TBLPROPERTIES를 지정합니다.

  • 테이블 생성 (ORC) — orc.compress = NONE에서 TBLPROPERTIES를 지정합니다.

참고 및 리소스

  • 현재 .GZ 또는 .BZIP2와 같은 대문자 파일 확장명은 Athena에서 인식되지 않습니다. 파일 확장명이 대문자인 데이터 세트을 사용하지 않거나 데이터 파일 확장명의 이름을 소문자로 바꿉니다.

  • CSV, TSV 및 JSON 형식 데이터의 경우 Athena는 파일 확장명에서 압축 형식을 결정합니다. 파일 확장자가 없는 경우 Athena는 데이터를 압축되지 않은 일반 텍스트로 처리합니다. 데이터가 압축된 경우 파일 이름에 gz와 같은 압축 확장명이 포함되어 있는지 확인하세요.

  • ZIP 파일 형식은 지원되지 않습니다.

  • Athena에서 querying Amazon Data Firehose 로그를 쿼리하는 경우, 지원되는 형식에는 GZIP 압축 또는 SNAPPY 압축을 사용하는 ORC 파일이 포함됩니다.

  • 압축 사용에 대한 자세한 내용은 AWS 빅 데이터 블로그 게시물 Top 10 performance tuning tips for Amazon Athena(Amazon Athena의 성능 튜닝을 위한 10가지 팁)의 섹션 3(“Compress and split files(파일 압축 및 분할)”)을 참조하세요.