Amazon S3에서의 테이블 위치 - Amazon Athena

Amazon S3에서의 테이블 위치

Athena에서 CREATE TABLE 쿼리를 실행할 때 AWS Glue Data Catalog에 테이블을 등록합니다. Athena의 이전 내부 카탈로그를 사용하는 경우 AWS Glue Data Catalog로 업그레이드하는 것이 좋습니다.

Amazon S3의 데이터에 대한 경로를 지정하려면 다음 예와 같이 LOCATION 속성을 사용합니다.

CREATE EXTERNAL TABLE `test_table`( ... ) ROW FORMAT ... STORED AS INPUTFORMAT ... OUTPUTFORMAT ... LOCATION s3://bucketname/folder/
  • 버킷 이름 지정에 대한 자세한 내용은 Amazon Simple Storage Service 개발자 가이드버킷 규제 및 제한을 참조하십시오.

  • Amazon S3의 폴더 사용에 대한 자세한 내용은 Amazon Simple Storage Service 콘솔 사용 설명서폴더 사용을 참조하십시오.

Amazon S3의 LOCATION은 테이블을 나타내는 모든 파일을 지정합니다.

중요

Athena는 s3://bucketname/folder/'에 저장된 모든 데이터를 읽습니다. Athena에서 특정 데이터를 읽지 않게 하려면 Athena에서 읽을 데이터와 같은 Amazon S3 폴더로 해당 데이터를 저장하지 마십시오. 파티셔닝을 활용하는 경우 Athena가 파티션 내의 데이터를 스캔하도록 하려면 WHERE 필터에 파티션을 포함해야 합니다. 자세한 내용은 테이블 위치 및 파티션을 참조하십시오.

CREATE TABLE 문에서 LOCATION을 지정하는 경우 다음 지침을 따르십시오.

  • 후행 슬래시를 사용하십시오.

    다음 사용:

    s3://bucketname/folder/
  • 데이터에 대해 LOCATION을 지정하는 데 다음 항목을 사용하지 마십시오.

    • 파일 위치를 지정할 때 파일 이름, 밑줄, 와일드카드 또는 glob 패턴을 사용하지 마십시오.

    • Amazon S3 버킷 경로에 s3.amazon.com 등의 전체 HTTP 표기법을 추가하지 마십시오.

    • Amazon S3 액세스 포인트를 사용하지 마십시오. 하지만 Amazon S3 버킷 정책이 Amazon S3 액세스 포인트를 통해 생성되지 않은 객체에 대한 요청을 명시적으로 거부하지 않는 한, 합당한 객체 액세스 권한을 가진 요청자를 위해 객체는 Athena에서 액세스할 수 있어야 합니다.

    • S3://bucketname/folder//folder/와 같이 경로에서 // 같은 빈 폴더를 사용하지 마십시오. 유효한 Amazon S3 경로일 경우 Athena는 이를 허용하지 않으며 s3://bucketname/folder/folder/로 변경하고 여분의 /를 삭제합니다.

      다음 사용 안 함:

      s3://path_to_bucket s3://path_to_bucket/* s3://path_to_bucket/mySpecialFile.dat s3://bucketname/prefix/filename.csv s3://test-bucket.s3.amazon.com S3://bucket/prefix//prefix/ arn:aws:s3:::bucketname/prefix https://accesspointname-<number>.s3-accesspoint.<region>.amazonaws.com

테이블 위치 및 파티션

소스 데이터는 열 집합을 기반으로 파티션이라는 Amazon S3 폴더로 그룹화될 수 있습니다. 예를 들어, 이러한 열은 특정 레코드가 생성된 연도, 월, 일을 나타낼 수 있습니다.

테이블을 생성할 때 테이블을 분할하도록 선택할 수 있습니다. Athena에서 분할되지 않은 테이블에 대해 SQL 쿼리를 실행하면 테이블 정의의 LOCATION 속성을 기본 경로로 사용하여 나열하고 사용 가능한 모든 파일을 스캔합니다. 그러나 분할된 테이블을 쿼리하기 전에 먼저 파티션 정보로 AWS Glue Data Catalog를 업데이트해야 합니다. 이 정보는 특정 파티션 내의 파일 스키마와 해당 파티션의 Amazon S3에 있는 파일의 LOCATION을 나타냅니다.

Athena에서 분할된 테이블에 대해 쿼리를 실행하는 경우 먼저 쿼리의 WHERE 절에 분할된 열이 사용되는지 확인합니다. 분할된 열이 사용되는 경우 Athena는 지정된 파티션 열과 일치하는 파티션 사양을 반환하도록 AWS Glue Data Catalog에 요청합니다. 파티션 사양에는 Athena에서 데이터를 읽을 때 사용할 Amazon S3 접두사를 지정하는 LOCATION 속성이 포함되어 있습니다. 이 경우 이 접두사에 저장된 데이터 스캔됩니다. WHERE 절에서 분할된 열을 사용하지 않는 경우 Athena는 테이블의 파티션에 속한 모든 파일을 검색합니다.

Athena로 파티셔닝을 사용하여 쿼리 성능을 높이고 쿼리 비용을 줄이는 예제는 Amazon Athena의 성능 튜닝 팁을 참조하십시오.