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