기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
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 | 타임스탬프 |