빠른 시작: Amazon S3에서 데이터 쿼리 - 아마존 SageMaker

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

빠른 시작: Amazon S3에서 데이터 쿼리

사용자는 SQL 확장을 사용하여 JupyterLab 노트북에서 SQL 쿼리를 실행하여 Amazon S3에 저장된 데이터를 분석할 수 있습니다. 확장 프로그램은 Athena와 통합되어 몇 가지 추가 단계만 거치면 Amazon S3의 데이터 기능을 사용할 수 있습니다.

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

사전 조건 
  • 관리자 권한이 있는 AWS Identity and Access Management (IAM) 사용자 계정을 사용하여 AWS 관리 콘솔에 로그인합니다. AWS 계정을 등록하고 관리 액세스 권한이 있는 사용자를 생성하는 방법에 대한 자세한 내용은 을 참조하십시오아마존 SageMaker 사전 요구 사항.

  • SageMaker Studio에 액세스하려면 SageMaker 도메인과 사용자 프로필이 있어야 합니다. SageMaker 환경 설정 방법에 대한 자세한 내용은 을 참조하십시오아마존으로 빠른 설정 SageMaker.

  • 환경과 동일한 AWS 지역 및 계정을 사용하여 Athena 쿼리 결과를 저장할 Amazon S3 버킷과 폴더를 마련하십시오 SageMaker . 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 Amazon S3 버킷이 사용자 SageMaker 환경과 다른 AWS 계정에 있는 경우, 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. 다음을 선택합니다.

    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단계: 스튜디오에 Athena에 액세스할 수 있는 권한 부여

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

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

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

    2. 도메인 이름 이름을 팔로우하세요.

    3. 사용자 프로필 목록에서 사용자 프로필의 이름을 따르세요.

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

  2. 실행 역할 정책을 업데이트하세요.

    1. SageMaker콘솔 오른쪽 상단에서 AWS 지역 및 계정 ID를 찾을 수 있습니다. 이 값과 데이터베이스 이름을 사용하여 텍스트 편집기에서 다음 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. 정책 이름을 입력한 다음 Create policy (정책 생성) 를 선택합니다.

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

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

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

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

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

  3. JupyterLab 애플리케이션을 위한 스페이스를 만들지 않은 경우 JupyterLab 스페이스 만들기를 선택합니다. 스페이스 이름을 입력하고 스페이스를 비공개로 유지한 다음 스페이스 만들기를 선택합니다. 최신 버전의 SageMaker 배포 이미지를 사용하여 스페이스를 운영하십시오.

    그렇지 않으면 스페이스에서 Run space를 선택하여 JupyterLab 애플리케이션을 실행하십시오.

  4. Athena 기본 연결 활성화:

    1. JupyterLab 애플리케이션에서 상단 내비게이션 바의 설정 메뉴로 이동하여 설정 편집기 메뉴를 엽니다.

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

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

    4. JupyterLab 애플리케이션에서 왼쪽 탐색 창의 SQL extension icon. 아이콘을 선택하여 SQL 확장을 엽니다.

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

4단계: SQL 확장 프로그램을 사용하여 JupyterLab 노트북에서 Amazon S3의 데이터를 쿼리합니다.

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

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

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

    그러면 노트북 셀이 데이터 소스에 연결하기 위한 관련 %%sm_sql 매직 JupyterLab 명령으로 자동으로 채워집니다. 또한 쿼리를 바로 시작할 수 있도록 샘플 SQL 문도 추가됩니다.

    참고

    SQL 쿼리를 실행하기 전에 맨 위 셀에 확장 프로그램을 로드해야 합니다.

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