AWS Glue 에서 ETL 프로세스를 로 변환 AWS Schema Conversion Tool - AWS Schema Conversion Tool

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

AWS Glue 에서 ETL 프로세스를 로 변환 AWS Schema Conversion Tool

다음 섹션에서는 Python에서 AWS Glue API 작업을 호출하는 변환에 대한 설명을 찾을 수 있습니다. 자세한 내용은 AWS Glue 개발자 안내서에서 Python으로 AWS Glue ETL 스크립트 프로그래밍을 참조하세요.

1단계: 데이터베이스 생성

첫 번째 단계는 AWS SDK API를 사용하여 AWS Glue 데이터 카탈로그에 새 데이터베이스를 생성하는 것입니다. 데이터 카탈로그에 테이블을 정의할 경우 해당 테이블을 데이터베이스에 추가합니다. 데이터베이스는 테이블을 구성하는 데 사용됩니다 AWS Glue.

다음 예제에서는에 대한 Python API의 create_database 메서드를 보여줍니다 AWS Glue.

response = client.create_database( DatabaseInput={ 'Name': 'database_name’, 'Description': 'description', 'LocationUri': 'string', 'Parameters': { 'parameter-name': 'parameter value' } } )

Amazon Redshift를 사용하는 경우 데이터베이스 이름은 다음과 같은 형식으로 구성됩니다.

{redshift_cluster_name}_{redshift_database_name}_{redshift_schema_name}

이 예제에서 Amazon Redshift 클러스터의 전체 이름은 다음과 같습니다.

rsdbb03.apq1mpqso.us-west-2.redshift.amazonaws.com

다음은 올바른 형식의 데이터베이스 이름의 예입니다. 이 경우 rsdbb03은 이름으로, 클러스터 엔드포인트 전체 이름의 첫 번째 부분입니다. 데이터베이스는 dev로 이름이 지정되고 스키마는 ora_glue입니다.

rsdbb03_dev_ora_glue

2단계: 연결 생성

AWS SDK API를 사용하여 데이터 카탈로그에 새 연결을 생성합니다.

다음 예제에서는에 대한 Python API의 create_connection 메서드를 사용하는 방법을 보여줍니다 AWS Glue.

response = client.create_connection( ConnectionInput={ 'Name': 'Redshift_abcde03.aabbcc112233.us-west-2.redshift.amazonaws.com_dev', 'Description': 'Created from SCT', 'ConnectionType': 'JDBC', 'ConnectionProperties': { 'JDBC_CONNECTION_URL': 'jdbc:redshift://aabbcc03.aabbcc112233.us-west-2.redshift.amazonaws.com:5439/dev', 'USERNAME': 'user_name', 'PASSWORD': 'password' }, 'PhysicalConnectionRequirements': { 'AvailabilityZone': 'us-west-2c', 'SubnetId': 'subnet-a1b23c45', 'SecurityGroupIdList': [ 'sg-000a2b3c', 'sg-1a230b4c', 'sg-aba12c3d', 'sg-1abb2345' ] } } )

create_connection에서 사용되는 파라미터는 다음과 같습니다.

  • Name(UTF-8 문자열) - 필수. Amazon Redshift의 경우 연결 이름은 Redshift_<Endpoint-name>_<redshift-database-name>과 같이 구성됩니다. 예: Redshift_abcde03_dev

  • Description(UTF-8 문자열) - 연결에 대한 설명입니다.

  • ConnectionType(UTF-8 문자열) - 필수. 연결의 유형입니다. 현재 JDBC만 지원하고 SFTP는 지원하지 않습니다.

  • ConnectionProperties(dict) – 필수. JDBC 연결 URL, 사용자 이름 및 암호를 포함하여 이 연결의 파라미터로 사용되는 키-값 쌍의 목록입니다.

  • PhysicalConnectionRequirements(dict) - 물리적 연결 요구 사항이며 다음을 포함합니다.

    • SubnetId(UTF-8 문자열) - 연결에 사용되는 서브넷의 ID입니다.

    • SecurityGroupIdList(list) – 연결에 사용되는 보안 그룹 ID 목록입니다.

    • AvailabilityZone(UTF-8 문자열) - 필수. 엔드포인트가 포함된 가용 영역입니다. 이 파라미터는 이제 사용되지 않습니다.

3단계: AWS Glue 크롤러 생성

다음으로 AWS Glue 카탈로그를 채우는 AWS Glue 크롤러를 생성합니다. 자세한 내용은AWS Glue 개발자 안내서의 크롤러를 사용하여 데이터 카탈로그 작성을 참조하세요.

크롤러를 추가하는 첫 번째 단계는 AWS SDK API를 사용하여 데이터 카탈로그에 새 데이터베이스를 생성하는 것입니다. 시작하기 전에 먼저 delete_crawler 작업을 사용하여 이전 버전의 데이터베이스를 삭제해야 합니다.

크롤러를 만들 때는 몇 가지 고려 사항이 적용됩니다.

  • 크롤러 이름은 <redshift_node_name>_<redshift_database_name>_<redshift_shema_name> 형식을 사용합니다. 예: abcde03_dev_ora_glue

  • 이미 존재하는 IAM 역할을 사용합니다. IAM 역할 생성에 대한 자세한 내용은 IAM 사용 설명서의 IAM 역할 생성을 참조하세요.

  • 이전 단계에서 생성한 데이터베이스의 이름을 사용합니다.

  • 필수 ConnectionName 파라미터를 사용합니다.

  • path 파라미터에는 JDBC 대상의 경로를 사용합니다. 예: dev/ora_glue/%

다음 예제에서는 기존 크롤러를 삭제한 다음 AWS Glue용 Python API를 사용하여 새 크롤러를 생성합니다.

response = client.delete_crawler( Name='crawler_name' ) response = client.create_crawler( Name='crawler_name', Role= ‘IAM_role’, DatabaseName='database_name’, Description='string', Targets={ 'S3Targets': [ { 'Path': 'string', 'Exclusions': [ 'string', ] }, ], 'JdbcTargets': [ { 'ConnectionName': ‘ConnectionName’, 'Path': ‘Include_path’, 'Exclusions': [ 'string', ] }, ] }, Schedule='string', Classifiers=[ 'string', ], TablePrefix='string', SchemaChangePolicy={ 'UpdateBehavior': 'LOG'|'UPDATE_IN_DATABASE', 'DeleteBehavior': 'LOG'|'DELETE_FROM_DATABASE'|'DEPRECATE_IN_DATABASE' }, Configuration='string' )

크롤러를 생성한 후 실행하여 하나 이상의 데이터 스토어에 연결하고 데이터 구조를 결정하며 테이블을 데이터 카탈로그로 작성합니다. 다음과 같이 일정에 따라 크롤러를 실행할 수 있습니다.

response = client.start_crawler( Name='string' )

이 예제에서는 Amazon Redshift를 대상으로 사용합니다. Amazon Redshift 데이터 형식은 크롤러가 실행된 후 다음 방법으로 AWS Glue 데이터 형식에 매핑됩니다.

Amazon Redshift 데이터 형식 AWS Glue 데이터 유형
smallint smallint
정수 int
bigint bigint
decimal decimal(18,0)
decimal(p,s) decimal(p,s)
실제 double
double precision double
boolean boolean
char 문자열
varchar 문자열
varchar(n) 문자열
date date
타임스탬프 타임스탬프
timestamptz 타임스탬프