파티션 프로젝션 설정 - Amazon Athena

파티션 프로젝션 설정

테이블의 속성에서 파티션 프로젝션을 설정하는 과정은 두 단계로 이루어집니다.

  1. 각 파티션 열에 대한 데이터 범위 및 관련 패턴을 지정하거나 사용자 지정 템플릿을 사용합니다.

  2. 테이블에 대해 파티션 프로젝션을 활성화합니다.

참고

기존 테이블에 파티션 프로젝션 속성을 추가하기 전에 파티션 프로젝션 속성을 설정하려는 파티션 열이 테이블 스키마에 이미 있어야 합니다. 파티션 열이 아직 없는 경우 기존 테이블에 파티션 열을 수동으로 추가해야 합니다. AWS Glue에서는 이 단계를 자동으로 수행하지 않습니다.

이 단원에서는 AWS Glue에 대해 테이블 속성을 설정하는 방법을 보여줍니다. 이러한 속성을 설정하기 위해 AWS Glue 콘솔, Athena CREATE TABLE 쿼리 또는 AWS Glue API 작업을 사용할 수 있습니다. 다음 절차에서는 AWS Glue 콘솔에서 속성을 설정하는 방법을 보여줍니다.

AWS Glue 콘솔을 사용하여 파티션 프로젝션을 구성하고 활성화하려면
  1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/glue/에서 AWS Glue 콘솔을 엽니다.

  2. 테이블 탭을 선택합니다.

    테이블 탭에서 기존 테이블을 편집하거나 테이블 추가를 선택하여 새 테이블을 생성할 수 있습니다. 수동으로 또는 크롤러를 사용하여 테이블을 추가하는 방법에 대한 자세한 내용은 AWS Glue 개발자 안내서AWS Glue 콘솔에서 테이블 관련 작업을 참조하세요.

  3. 테이블 목록에서 편집하려는 테이블에 대한 링크를 선택합니다.

    
                        AWS Glue 콘솔에서 편집할 테이블을 선택합니다.
  4. Actions(작업), Edit table(테이블 편집)을 선택합니다.

  5. Edit table(테이블 편집) 페이지의 Table properties(테이블 속성) 섹션에서 분할된 각 열에 대해 다음 키-값 페어를 추가합니다.

    1. projection.columnName.type을 추가합니다.

    2. 에 지원되는 형식 enum, integer, date, injected 중 하나를 추가합니다. 자세한 내용은 파티션 프로젝션에 지원되는 형식 단원을 참조하세요.

  6. 파티션 프로젝션에 지원되는 형식의 지침을 따르고, 구성 요구 사항에 따라 추가적인 키-값 페어를 추가합니다.

    다음 예제 테이블 구성은 파티션 프로젝션에 대한 year 열을 구성하여 반환할 수 있는 값을 2010에서 2016까지의 범위로 제한합니다.

    
                        AWS Glue 콘솔 테이블 속성에서 파티션 열에 대한 파티션 프로젝션 구성.
  7. 키-값 페어를 추가하여 파티션 프로젝션을 활성화합니다. projection.enabled를 입력하고 true를 입력합니다.

    참고

    projection.enabledfalse로 설정하여 언제든지 이 테이블에서 파티션 프로젝션을 비활성화할 수 있습니다.

  8. 작업을 마쳤으면 저장을 선택합니다.

  9. Athena 쿼리 편집기에서 테이블에 대해 구성한 열을 테스트 쿼리합니다.

    다음 예제 쿼리는 SELECT DISTINCT를 사용하여 year 열에서 고유한 값을 반환합니다. 데이터베이스에는 1987년부터 2016년까지 데이터가 포함되어 있지만 projection.year.range 속성은 반환되는 값을 2010년에서 2016년까지로 제한합니다.

    
                        파티션 프로젝션을 사용하는 열 쿼리.
    참고

    projection.enabledtrue로 설정했지만 하나 이상의 파티션 열을 구성하지 못하면 다음과 같은 오류 메시지가 나타납니다.

    HIVE_METASTORE_ERROR: Table database_name.table_name is configured for partition projection, but the following partition columns are missing projection configuration: [column_name] (table database_name.table_name).

사용자 지정 S3 스토리지 위치 지정

AWS Glue에서 테이블 속성을 편집할 때 프로젝션된 파티션에 대한 사용자 지정 Amazon S3 경로 템플릿을 지정할 수도 있습니다. 사용자 지정 템플릿을 사용하면 Athena가 일반적인 .../column=value/... 패턴을 따르지 않는 사용자 지정 Amazon S3 파일 위치에 파티션 값을 올바르게 매핑할 수 있습니다.

사용자 지정 템플릿을 사용하는 것은 선택 사항입니다. 그러나 사용자 지정 템플릿을 사용하는 경우 템플릿에 각 파티션 열에 대한 자리 표시자를 포함시켜야 합니다. 분할된 데이터 파일이 파티션별 ‘폴더’에 상주하도록 템플릿 지정된 위치는 슬래시로 끝나야 합니다.

사용자 지정 파티션 위치 템플릿을 지정하려면
  1. AWS Glue 콘솔을 사용하여 파티션 프로젝션을 구성하고 활성화하는 단계에 따라 다음과 같이 사용자 지정 템플릿을 지정하는 키-값 페어를 추가합니다.

    1. 키(Key)storage.location.template를 입력합니다.

    2. 에서 모든 파티션 열에 대한 자리 표시자를 포함하는 위치를 지정합니다. 각 자리 표시자(및 S3 경로 자체)가 단일 슬래시로 종료되었는지 확인합니다.

      다음 예제 템플릿 값은 테이블에 파티션 열 a, bc가 있다고 가정합니다.

      s3://bucket/table_root/a=${a}/${b}/some_static_subdirectory/${c}/
      s3://bucket/table_root/c=${c}/${b}/some_static_subdirectory/${a}/${b}/${c}/${c}/

      같은 테이블의 경우 다음 예제 템플릿 값은 열 c에 대한 자리 표시자가 포함되어 있지 않기 때문에 유효하지 않습니다.

      s3://bucket/table_root/a=${a}/${b}/some_static_subdirectory/
  2. 적용을 선택합니다.