제퍼넷 로고

AWS Glue JDBC 작업에서 여러 북마크 키 사용 | 아마존 웹 서비스

시간

AWS 접착제 데이터를 카탈로그화하고 분석을 준비하는 데 사용할 수 있는 서버리스 데이터 통합 ​​서비스입니다. AWS Glue를 사용하면 데이터를 검색하고, 소스를 대상으로 변환하는 스크립트를 개발하고, 서버리스 환경에서 ETL(추출, 변환 및 로드) 작업을 예약 및 실행할 수 있습니다. AWS Glue 작업은 데이터 처리 로직을 실행하는 역할을 담당합니다.

AWS Glue 작업의 중요한 기능 중 하나는 북마크 키 데이터를 점진적으로 처리합니다. AWS Glue 작업이 실행되면 데이터 원본에서 데이터를 읽고 처리합니다. 소스 테이블의 하나 이상의 열을 북마크 키로 지정할 수 있습니다. 열에는 간격 없이 순차적으로 증가하거나 감소하는 값이 있어야 합니다. 이 값은 배치에서 마지막으로 처리된 레코드를 표시하는 데 사용됩니다. 다음 작업 실행은 해당 지점부터 다시 시작됩니다. 이를 통해 대량의 데이터를 점진적으로 처리할 수 있습니다. 작업 북마크 키가 없으면 AWS Glue 작업은 실행될 때마다 모든 데이터를 다시 처리해야 합니다. 이는 시간과 비용이 많이 소요될 수 있습니다. 북마크 키를 사용하면 AWS Glue 작업이 중단된 부분부터 처리를 재개하여 시간을 절약하고 비용을 절감할 수 있습니다.

이 게시물에서는 소스 데이터 스토어에 대한 JDBC 연결을 통해 AWS Glue 작업에서 여러 열을 작업 북마크 키로 사용하는 방법을 설명합니다. 또한 AWS Glue 작업 연결 옵션에서 북마크 키 열과 테이블 이름을 매개변수화하는 방법을 보여줍니다.

이 게시물은 AWS에서 ETL 파이프라인을 설계하고 구축하는 설계자와 데이터 엔지니어를 대상으로 합니다. 에 대한 기본적인 이해가 있을 것으로 예상됩니다. AWS 관리 콘솔, AWS 글루, Amazon Relational Database Service (아마존 RDS)아마존 클라우드 워치 로그.

솔루션 개요

이 솔루션을 구현하기 위해 다음 단계를 완료합니다.

  1. 를 생성 PostgreSQL 용 Amazon RDS 예.
  2. 두 개의 테이블을 만들고 샘플 데이터를 삽입합니다.
  3. 여러 작업 북마크 키를 사용하여 PostgreSQL용 RDS DB 인스턴스에서 데이터를 추출하는 AWS Glue 작업을 생성하고 실행합니다.
  4. 매개변수화된 AWS Glue 작업을 생성 및 실행하여 별도의 북마크 키를 사용하여 다양한 테이블에서 데이터를 추출합니다.

다음 다이어그램은 이 솔루션의 구성 요소를 보여줍니다.

솔루션 배포

이 솔루션을 위해 우리는 AWS 클라우드 포메이션 반복 가능한 배포를 가능하게 하기 위해 아키텍처에 포함된 서비스를 설정하는 템플릿입니다. 이 템플릿은 다음 리소스를 생성합니다.

솔루션을 배치하려면 다음 단계를 완료하십시오.

  1. 왼쪽 메뉴에서  CloudFormation 스택을 시작하려면:
  2. 스택 이름을 입력하십시오.
  3. 선택 AWS CloudFormation이 사용자 지정 이름으로 IAM 리소스를 생성 할 수 있음을 인정합니다.
  4. 왼쪽 메뉴에서 스택 생성.
  5. AWS CloudFormation 콘솔에 표시된 대로 스택 생성이 완료될 때까지 기다립니다.
  6. 스택이 완료되면 AWS Glue 스크립트를 S3 버킷에 복사합니다. job-bookmark-keys-demo-<accountid>.
  7. 엽니다 AWS 클라우드쉘.
  8. 다음 명령을 실행하고 교체하십시오. <accountid> AWS 계정 ID로:
aws s3 cp s3://aws-blogs-artifacts-public/artifacts/BDB-2907/glue/scenario_1_job.py s3://job-bookmark-keys-demo-<accountid>/scenario_1_job.py
aws s3 cp s3://aws-blogs-artifacts-public/artifacts/BDB-2907/glue/scenario_2_job.py s3://job-bookmark-keys-demo-<accountid>/scenario_2_job.py

샘플 데이터 추가 및 AWS Glue 작업 실행

이 섹션에서는 다음을 통해 RDS for PostgreSQL 인스턴스에 연결합니다. AWS 람다 그리고 두 개의 테이블을 만듭니다. 또한 두 테이블 모두에 샘플 데이터를 삽입합니다.

  1. Lambda 콘솔에서 기능 탐색 창에서
  2. 기능을 선택하십시오 LambdaRDSDDLExecute.
  3. 왼쪽 메뉴에서 Test 선택하고 호출 Lambda 함수가 데이터를 삽입하도록 합니다.


다음 스크린샷에 표시된 것처럼 두 개의 테이블 제품 및 주소가 샘플 데이터로 생성됩니다.

multiple_job_bookmark_keys AWS Glue 작업 실행

우리는 실행 multiple_job_bookmark_keys AWS Glue 작업을 두 번 수행하여 RDS for PostgreSQL 인스턴스의 제품 테이블에서 데이터를 추출합니다. 첫 번째 실행에서는 기존 레코드가 모두 추출됩니다. 그런 다음 새 레코드를 삽입하고 작업을 다시 실행합니다. 작업은 두 번째 실행에서 새로 삽입된 레코드만 추출해야 합니다.

  1. AWS Glue 콘솔에서 작업 탐색 창에서
  2. 직업을 선택하세요 multiple_job_bookmark_keys.
  3. 왼쪽 메뉴에서 달리기 작업을 실행하고 실행 탭을 클릭하여 작업 진행 상황을 모니터링하세요.
  4. 선택 출력 로그 아래의 하이퍼링크 CloudWatch 로그 작업이 완료된 후.
  5. 인쇄된 출력 로그를 보려면 다음 창에서 로그 스트림을 선택하세요.

    AWS Glue 작업은 소스 테이블 제품에서 모든 레코드를 추출했습니다. 열의 마지막 값 조합을 추적합니다. product_idversion.다음으로 다른 Lambda 함수를 실행하여 새 레코드를 삽입합니다. 그만큼 product_id 45는 이미 존재하지만 삽입된 레코드는 2라는 새 버전을 갖게 되므로 조합이 순차적으로 증가합니다.
  6. 실행 LambdaRDSDDLExecute_incremental 새 레코드를 삽입하는 Lambda 함수 product 테이블.
  7. AWS Glue 작업 실행 multiple_job_bookmark_keys 레코드를 삽입한 후 다시 성공할 때까지 기다립니다.
  8. CloudWatch 로그 아래에서 출력 로그 하이퍼링크를 선택합니다.
  9. 새로 삽입된 기록만 인쇄하려면 다음 창에서 로그 스트림을 선택하세요.

작업은 이전에 추출된 레코드보다 조합이 더 큰 레코드만 추출합니다.

매개변수화된_job_bookmark_keys AWS Glue 작업 실행

이제 테이블 이름과 북마크 키 열을 매개변수로 사용하는 매개변수화된 AWS Glue 작업을 실행합니다. 별도의 책갈피를 유지하면서 여러 테이블에서 데이터를 추출하기 위해 이 작업을 실행합니다.

첫 번째 실행은 다음과 같은 주소 테이블에 대한 것입니다. bookmarkkey as address_id. 이는 이미 작업 매개변수로 채워져 있습니다.

  1. AWS Glue 콘솔에서 작업 탐색 창에서
  2. 직업을 선택하세요 parameterised_job_bookmark_keys.
  3. 왼쪽 메뉴에서 달리기 작업을 실행하고 실행 탭을 클릭하여 작업 진행 상황을 모니터링하세요.
  4. 선택 출력 로그 아래의 하이퍼링크 CloudWatch 로그 작업이 완료된 후.
  5. 인쇄된 주소 테이블의 모든 레코드를 보려면 다음 창에서 로그 스트림을 선택하십시오.
  6. 작업 메뉴선택한다. 매개변수를 사용하여 실행.
  7. 확장 작업 매개 변수 안내
  8. 작업 매개변수 값을 다음과 같이 변경합니다.
    • --bookmarkkey 가치있는 product_id
    • --table_name 가치있는 product
    • S3 버킷 이름은 변경되지 않습니다(job-bookmark-keys-demo-<accountnumber>)
  9. 왼쪽 메뉴에서 작업 실행 작업을 실행하고 실행 탭을 클릭하여 작업 진행 상황을 모니터링하세요.
  10. 선택 출력 로그 아래의 하이퍼링크 CloudWatch 로그 작업이 완료된 후.
  11. 인쇄된 제품 테이블의 모든 기록을 보려면 로그 스트림을 선택하세요.

작업은 원본 데이터 저장소에서 데이터를 추출할 때 각 테이블에 대해 별도의 책갈피를 유지 관리합니다. 이는 AWS Glue 작업 스크립트의 작업 이름과 변환 컨텍스트에 테이블 이름을 추가하여 수행됩니다.

정리

향후 요금이 발생하지 않도록 하려면 다음 단계를 완료하십시오.

  1. Amazon S3 콘솔에서 버킷 탐색 창에서
  2. 이름에 job-bookmark-keys가 포함된 버킷을 선택합니다.
  3. 왼쪽 메뉴에서 그 안의 모든 파일과 폴더를 삭제합니다.
  4. CloudFormation 콘솔에서 다음을 선택합니다. 스택 탐색 창에서
  5. 솔루션을 배포하기 위해 생성한 스택을 선택하고 ..

결론

이 게시물에서는 테이블의 두 개 이상의 열을 다음과 같이 전달하는 방법을 보여주었습니다. jobBookmarkKeys AWS Glue 작업에 대한 JDBC 연결. 또한 매개변수화된 AWS Glue 작업을 통해 해당 북마크를 유지하면서 여러 테이블에서 데이터를 추출하는 방법도 설명했습니다. 다음 단계에서는 원본 테이블의 데이터를 변경하여 증분 데이터 추출을 테스트할 수 있습니다.


저자에 관하여

두르가 프라사드 고객이 AWS에서 데이터 분석 솔루션을 구축할 수 있도록 지원하는 수석 수석 컨설턴트입니다. 그는 커피를 좋아하고 배드민턴을 즐깁니다.

무랄리 레디 Amazon Web Services(AWS)의 수석 컨설턴트로서 고객이 데이터 분석 솔루션을 구축하고 구현하도록 지원합니다. 일하지 않을 때 Murali는 열렬한 자전거 라이더이며 새로운 장소를 탐험하는 것을 좋아합니다.

spot_img

최신 인텔리전스

spot_img