Quickstart: Amazon S3에서 데이터 쿼리 - Amazon SageMaker

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Quickstart: Amazon S3에서 데이터 쿼리

사용자는 SQL 확장을 사용하여 JupyterLab 노트북에서 SQL 쿼리를 실행하여 Amazon S3에 저장된 데이터를 분석할 수 있습니다. 확장은 Athena와 통합되어 몇 가지 추가 단계를 통해 Amazon S3의 데이터에 대한 기능을 활성화합니다.

이 섹션에서는 Amazon S3에서 Athena로 데이터를 로드한 다음 SQL 확장을 JupyterLab 사용하여 에서 해당 데이터를 쿼리하는 단계를 안내합니다. Athena 데이터 소스와 AWS Glue 크롤러를 생성하여 Amazon S3 데이터를 인덱싱하고, Athena에 JupyterLab 액세스할 수 있도록 적절한 IAM 권한을 구성하고, JupyterLab Athena에 연결하여 데이터를 쿼리합니다. 이러한 몇 가지 단계에 따라 JupyterLab 노트북의 SQL 확장을 사용하여 Amazon S3 데이터를 분석할 수 있습니다.

사전 조건
  • 관리자 권한이 있는 AWS Identity and Access Management (IAM) 사용자 계정을 사용하여 AWS Management Console에 로그인합니다. 계정에 가입하고 관리 액세스 권한이 있는 사용자를 생성하는 방법에 대한 AWS 자세한 내용은 섹션을 참조하세요Amazon SageMaker 사전 조건 완료.

  • SageMaker Studio에 액세스할 도메인 SageMaker 및 사용자 프로필이 있어야 합니다. SageMaker 환경을 설정하는 방법에 대한 자세한 내용은 섹션을 참조하세요Amazon용 빠른 설정 사용 SageMaker.

  • SageMaker 환경과 동일한 AWS 리전 및 계정을 사용하여 Amazon S3 버킷 및 폴더를 사용하여 Athena 쿼리 결과를 저장합니다. Amazon S3에서 버킷을 생성하는 방법에 대한 자세한 내용은 Amazon S3 설명서의 버킷 생성을 참조하세요. 이 버킷과 폴더를 쿼리 출력 위치로 구성합니다.

1단계: Amazon S3 데이터에 대한 Athena 데이터 소스 및 AWS Glue 크롤러 설정

Amazon S3에서 데이터를 인덱싱하고 Athena에서 테이블을 생성하는 방법은 다음과 같습니다.

참고

서로 다른 Amazon S3 위치의 테이블 이름 간에 충돌을 방지하려면 각 위치에 대해 별도의 데이터 소스와 크롤러를 생성합니다. 각 데이터 소스는 접두사가 붙지 않는 한 이를 포함하는 폴더 뒤에 라는 테이블을 생성합니다.

  1. 쿼리 결과 위치 구성

    1. Athena 콘솔: 로 이동합니다https://console.aws.amazon.com/athena/.

    2. 왼쪽 메뉴에서 작업 그룹 을 선택합니다.

    3. primary 작업 그룹의 링크를 따라가서 편집을 선택합니다.

    4. 쿼리 결과 구성 섹션에서 출력 디렉터리의 Amazon S3 경로를 입력한 다음 변경 사항 저장을 선택합니다.

  2. Amazon S3 데이터에 대한 Athena 데이터 소스 생성

    1. Athena 콘솔의 왼쪽 메뉴에서 데이터 소스를 선택한 다음 데이터 소스 생성 을 선택합니다.

    2. S3 - AWS Glue 데이터 카탈로그를 선택한 다음 다음 를 선택합니다.

    3. AWS Glue 이 계정 에 기본 데이터 카탈로그를 두고 에서 크롤러 생성을 AWS Glue 선택한 다음 에서 생성을 AWS Glue 선택합니다. 그러면 AWS Glue 콘솔이 열립니다.

  3. AWS Glue 를 사용하여 데이터 소스 크롤링

    1. 새 크롤러의 이름과 설명을 입력한 다음 다음 를 선택합니다.

    2. 데이터 소스 에서 데이터 소스 추가 를 선택합니다.

      1. 데이터가 포함된 Amazon S3 버킷이 SageMaker 환경과 다른 AWS 계정에 있는 경우 S3 데이터 위치 에 대해 다른 계정에서 를 선택합니다. S3

      2. Amazon S3에서 데이터 세트의 경로를 입력합니다. 예:

        s3://dsoaws/nyc-taxi-orig-cleaned-split-parquet-per-year-multiple-files/ride-info/year=2019/
      3. 다른 모든 기본값을 유지한 다음 Amazon S3 데이터 소스 추가를 선택합니다. 데이터 소스 테이블에 새 Amazon S3 데이터 소스가 표시됩니다.

      4. Next(다음)를 선택합니다.

    3. 크롤러가 데이터에 액세스할 수 있도록 IAM 역할을 구성합니다.

      참고

      각 역할의 범위는 지정한 데이터 소스로 제한됩니다. 역할을 재사용할 때 JSON 정책을 편집하여 이 데이터 소스에 대한 액세스 권한을 부여하거나 새 역할을 생성하려는 새 리소스를 추가합니다.

      1. 새 IAM 역할 생성 을 선택합니다.

      2. 역할의 이름을 입력한 다음 다음 를 선택합니다.

  4. 테이블에 대한 데이터베이스 생성 또는 선택

    1. Athena에 기존 데이터베이스가 없는 경우 데이터베이스 추가를 선택한 다음 새 데이터베이스 생성 을 선택합니다.

    2. 이전 크롤러 생성 탭으로 돌아가 출력 구성 에서 새로 고침 버튼을 선택합니다. 이제 새로 생성된 데이터베이스가 목록에 표시됩니다.

    3. 데이터베이스를 선택하고 테이블 이름 접두사에 선택적 접두사를 추가한 다음 다음을 선택합니다.

      참고

      데이터가 에 있는 이전 예제의 경우 접두사를 s3://dsoaws/nyc-taxi-orig-cleaned-split-parquet-per-year-multiple-files/ride-info/year=2019/추가taxi-ride-하면 라는 테이블이 생성됩니다taxi-ride-year_2019. 접두사를 추가하면 여러 데이터 위치에 이름이 동일한 폴더가 있을 때 테이블 이름 충돌을 방지하는 데 도움이 됩니다.

  5. 크롤러 생성을 선택합니다.

  6. 크롤러를 실행하여 데이터를 인덱싱합니다. 크롤러 실행이 Completed 상태에 도달할 때까지 기다립니다. 몇 분 정도 걸릴 수 있습니다.

새 테이블이 생성되었는지 확인하려면 의 왼쪽 메뉴로 이동하여 데이터베이스를 선택한 다음 테이블을 AWS Glue 선택합니다. 이제 데이터가 포함된 새 테이블이 표시됩니다.

2단계: Studio에 Athena에 액세스할 수 있는 권한 부여

다음 단계에서는 사용자 프로필의 실행 역할에 Athena에 액세스할 수 있는 권한을 부여합니다.

  1. 사용자 프로필과 연결된 실행 역할ARN의 를 검색합니다.

    1. 의 SageMaker 콘솔로 이동하여 왼쪽 메뉴에서 도메인을 https://console.aws.amazon.com/sagemaker/ 선택합니다.

    2. 도메인 이름의 이름을 따릅니다.

    3. 사용자 프로필 목록에서 사용자 프로필의 이름을 따릅니다.

    4. 사용자 세부 정보 페이지에서 실행 역할ARN의 를 복사합니다.

  2. 실행 역할의 정책 업데이트

    1. 콘솔 오른쪽 상단에서 AWS 리전 및 계정 ID를 SageMaker 찾습니다. 이러한 값과 데이터베이스 이름을 사용하여 텍스트 편집기의 다음 JSON 정책에서 자리 표시자를 업데이트합니다.

      { "Version": "2012-10-17", "Statement": [ { "Sid": "GetS3AndDataSourcesMetadata", "Effect": "Allow", "Action": [ "glue:GetDatabases", "glue:GetSchema", "glue:GetTables", "s3:ListBucket", "s3:GetObject", "s3:GetBucketLocation", "glue:GetDatabase", "glue:GetTable", "glue:ListSchemas", "glue:GetPartitions" ], "Resource": [ "arn:aws:s3:::*", "arn:aws:glue:region:account-id:catalog", "arn:aws:glue:region:account-id:database/db-name" ] }, { "Sid": "ExecuteAthenaQueries", "Effect": "Allow", "Action": [ "athena:ListDataCatalogs", "athena:ListDatabases", "athena:ListTableMetadata", "athena:StartQueryExecution", "athena:GetQueryExecution", "athena:RunQuery", "athena:StartSession", "athena:GetQueryResults", "athena:ListWorkGroups", "s3:ListMultipartUploadParts", "s3:ListBucket", "s3:GetBucketLocation", "athena:GetDataCatalog", "s3:AbortMultipartUpload", "s3:GetObject", "s3:PutObject", "athena:GetWorkGroup" ], "Resource": [ "arn:aws:s3:::*" ] }, { "Sid": "GetGlueConnectionsAndSecrets", "Effect": "Allow", "Action": [ "glue:GetConnections", "glue:GetConnection" ], "Resource": [ "*" ] } ] }
    2. IAM 콘솔로 이동하여 왼쪽 메뉴에서 역할을 https://console.aws.amazon.com/iam/ 선택합니다.

    3. 역할 이름으로 역할을 검색합니다.

      참고

      를 ARN에서 분할'/'하고 마지막 요소를 가져와 Amazon 리소스 이름(ARN)에서 실행 역할 이름을 검색할 수 있습니다. 예를 들어 다음 예제에서 실행 역할의 ARN arn:aws:iam::112233445566:role/SageMakerStudio-SQLExtension-ExecutionRole이름은 입니다SageMakerStudio-SQLExtension-ExecutionRole.

    4. 역할의 링크를 따릅니다.

    5. 권한 탭에서 권한 추가를 선택한 다음 인라인 정책 생성을 선택합니다.

    6. 정책 편집기 섹션에서 JSON 형식을 선택합니다.

    7. 위의 정책을 복사한 다음 다음을 선택합니다. 모든 account-id, region-name및 를 db-name 해당 값으로 바꾸었는지 확인합니다.

    8. 정책의 이름을 입력한 다음 정책 생성 을 선택합니다.

3단계: 에서 Athena 기본 연결 활성화 JupyterLab

다음 단계에서 JupyterLab 는 애플리케이션에서 default-athena-connection를 활성화합니다. 기본 Athena 연결을 사용하면 연결을 수동으로 생성할 필요 JupyterLab없이 에서 직접 Athena에서 SQL 쿼리를 실행할 수 있습니다.

기본 Athena 연결을 활성화하려면

  1. 의 SageMaker 콘솔로 이동하여 왼쪽 메뉴에서 Studiohttps://console.aws.amazon.com/sagemaker/ 선택합니다. 도메인 및 사용자 프로필을 사용하여 Studio를 시작합니다.

  2. JupyterLab 애플리케이션을 선택합니다.

  3. JupyterLab 애플리케이션에 대한 공간을 생성하지 않은 경우 JupyterLab 공간 생성을 선택합니다. 공백의 이름을 입력하고 공백을 프라이빗 로 유지한 다음 공백 생성 을 선택합니다. 배포 이미지의 SageMaker 최신 버전을 사용하여 공간을 실행합니다.

    그렇지 않으면 공간의 공간 실행을 선택하여 JupyterLab 애플리케이션을 시작합니다.

  4. Athena 기본 연결 활성화:

    1. JupyterLab 애플리케이션에서 상단 탐색 모음의 설정 메뉴로 이동하여 설정 편집기 메뉴를 엽니다.

    2. 데이터 검색 을 선택합니다.

    3. 기본 Athena 연결 활성화 확인란을 선택합니다.

    4. JupyterLab 애플리케이션에서 왼쪽 탐색 창의 SQL 확장 아이콘( Purple circular icon with a clock symbol representing time or scheduling. )을 선택하여 SQL 확장을 엽니다.

    5. 데이터 검색 패널 하단의 새로 고침 버튼을 선택합니다. 연결 목록에 default-athena-connection 이 표시됩니다.

4단계: SQL 확장을 사용하여 JupyterLab 노트북에서 Amazon S3의 데이터 쿼리

JupyterLab 노트북SQL에서 를 사용하여 데이터를 쿼리할 준비가 되었습니다.

  1. 연결을 default-athena-connection 연 다음 를 엽니다AWS DataCatalog.

  2. 데이터베이스로 이동하여 오른쪽에 있는 점 3개 아이콘( SQL extension three dots icon. )을 선택합니다. 노트북 에서 쿼리를 선택합니다.

    이렇게 하면 의 노트북 셀이 데이터 소스 JupyterLab 에 연결하기 위한 관련 %%sm_sql 매직 명령으로 자동으로 채워집니다. 또한 즉시 쿼리를 시작하는 데 도움이 되는 샘플 SQL 문을 추가합니다.

    참고

    SQL 쿼리를 실행하기 전에 최상위 셀에 확장을 로드해야 합니다.

    확장의 자동 완성 및 강조 표시 기능을 사용하여 SQL 쿼리를 추가로 세분화할 수 있습니다. SQL 확장 SQL 편집기 사용에 대한 SQL JupyterLab SQL 확장의 편집기 기능 자세한 내용은 섹션을 참조하세요.