내용으로 건너뛰기

Amazon Athena에서 파티션된 테이블을 생성하고 사용하려면 어떻게 해야 합니까?

3분 분량
0

Amazon Athena에서 파티션된 테이블을 생성하여 쿼리를 개선하는 데 사용하려고 합니다.

간략한 설명

파티션된 Athena 테이블을 생성하려면 다음 단계를 완료하십시오.

  1. Amazon Simple Storage Service(Amazon S3) 버킷에 데이터를 파티션으로 저장합니다.
  2. 테이블을 생성할 때 파티셔닝 열과 파티션된 데이터의 루트 위치를 지정합니다.
  3. 파티션을 AWS Glue Data Catalog에 업로드합니다.
    참고: 쿼리를 실행하면 테이블이 Data Catalog를 참조합니다.

해결 방법

Amazon S3에 데이터를 파티션으로 저장

다음 형식 중 하나를 선택하여 파티션된 데이터를 저장합니다.

  • Hive 스타일 형식: s3://doc-example-bucket/example-folder/year=2021/month=01/day=01/myfile.csv
    참고: 경로에는 파티션 키의 이름과 값이 포함됩니다. 예를 들어 year=2021입니다.
  • Hive 스타일이 아닌 형식: s3://doc-example-bucket/example-folder/2021/01/01/myfile.csv

테이블을 생성할 때 파티셔닝 정보 지정

CREATE TABLE 문에서 파티션 열을 정의하려면 PARTITIONED BY를 포함하고 파티션된 데이터의 루트 위치를 지정하려면 LOCATION을 지정합니다.

쿼리 예시:

CREATE EXTERNAL TABLE doc-example-table (
first string,
last string,
username string
)
PARTITIONED BY (year string, month string, day string)
STORED AS parquet
LOCATION 's3://doc-example-bucket/example-folder'

참고: 앞의 쿼리에서 다음 값을 원하는 값으로 바꿉니다.

  • doc-example-table을 생성할 테이블의 이름으로 바꾸기
  • doc-example-bucket을 테이블을 저장할 S3 버킷의 이름으로 바꾸기
  • example-folder를 S3 폴더 이름으로 바꾸기
  • first, lastusername을 열 이름으로 바꾸기
  • year string, month stringday string을 파티션 열의 이름으로 바꾸기

Data Catalog에 파티션 업로드

테이블을 생성한 후 다음 방법 중 하나를 선택하여 Data Catalog에 파티션을 추가합니다.

Hive 스타일 형식 데이터에 MSCK REPAIR TABLE 쿼리 사용

파티션을 추가한 후 Data Catalog 메타데이터를 업데이트하려면 MSCK REPAIR TABLE 명령을 실행합니다.

MSCK REPAIR TABLE doc-example-table

참고: doc-example-table을 사용자 테이블로 바꾸십시오.

파티션이 수천 개가 넘는 경우에는 이 방법을 사용하지 않는 것이 좋습니다. DDL 쿼리에 시간 초과 문제가 발생할 수 있습니다. 자세한 내용은 MSCK REPAIR TABLE 쿼리가 AWS Glue Data Catalog에 파티션을 추가하지 않는 이유는 무엇입니까?를 참조하십시오.

Hive 스타일 및 Hive 스타일이 아닌 형식 데이터 모두에 ALTER TABLE ADD PARTITION 쿼리 사용

Data Catalog에 파티션을 추가하려면 ALTER TABLE ADD PARTITION 명령을 실행합니다.

단일 파티션을 추가하려면 다음 명령을 실행합니다.

ALTER TABLE doc-example-table ADD PARTITION (year='2021', month='01', day='01') LOCATION 's3://doc-example-bucket/example-folder/2021/01/01/'

한 쿼리에 여러 파티션을 추가하려면 다음 명령을 실행합니다.

ALTER TABLE doc-example-table ADD  
PARTITION (year='2021', month='01', day='01') LOCATION 's3://doc-example-bucket/example-folder/2021/01/01/'  
PARTITION (year='2020', month='06', day='01') LOCATION 's3://doc-example-bucket/example-folder/2020/06/01/'

참고: 위의 명령에서 예시 값을 사용자의 값으로 바꾸십시오.

Hive 스타일 형식 데이터 및 Hive 스타일이 아닌 형식 데이터 모두에 AWS Glue 크롤러 사용

데이터세트에서 테이블 스키마를 자동으로 추론하고, 테이블을 생성하고, Data Catalog에 파티션을 추가하려면 AWS Glue 크롤러를 사용하십시오. 크롤러를 사용하여 CREATE TABLE 문으로 수동으로 생성한 테이블에 파티션만 추가할 수도 있습니다.

자세한 내용은 크롤러 동작 사용자 지정을 참조하십시오.

Amazon S3에서 고도로 파티션된 데이터에 파티션 프로젝션 사용

Amazon S3에서 고도로 파티션된 데이터에 대해 쿼리를 실행하는 방법은 쿼리 속도가 느리기 때문에 모범 사례가 아닙니다. 데이터가 고도로 파티션된 경우 파티션 프로젝션을 사용하여 쿼리 프로세스의 속도를 높이고 파티션 관리를 자동화하십시오.

관련 정보

Amazon Athena 테이블을 쿼리할 때 레코드가 0개로 나오는 이유는 무엇입니까?

새 파티션을 추가한 후 Athena 쿼리에서 결과를 반환하지 않는 이유는 무엇입니까?

AWS 공식업데이트됨 일 년 전
댓글 없음

관련 콘텐츠