本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將ETL處理程序轉換 AWS Glue 為 AWS Schema Conversion Tool
在以下各節中,您可以找到在 Python 中調用 AWS Glue API操作的轉換的說明。如需詳細資訊,請參閱 AWS Glue 開發人員指南中的 Python 中的程式指 AWS Glue ETL令碼。
步驟 1:建立資料庫
第一個步驟是使用在 AWS Glue 資料目錄中建立新資料庫AWS SDKAPI。當您在資料目錄中定義資料表時,就會將資料表加入資料庫。資料庫用於組織中的表格 AWS Glue。
下面的實例演示了API對 Python 的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 SDKAPI。
下面的實例演示了如何使用 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
(字典)-必需的。用作此連線參數的索引鍵值配對清單,包括JDBC連線URL、使用者名稱和密碼。 -
PhysicalConnectionRequirements
(dict)-物理連接要求,其中包括以下內容:-
SubnetId
(UTF-8 字符串)-連接使用的子網的 ID。 -
SecurityGroupIdList
(清單) — 連線所使用的安全性群組 ID 清單。 -
AvailabilityZone
(UTF-8 個字符串)— 必需。包含端點的可用區域。此參數已棄用。
-
步驟 3:建立 AWS Glue 爬行者程式
接下來,您要建立 AWS Glue 爬行者程式來填入目 AWS Glue 錄。如需詳細資訊,請參閱開發人員指南中的使用爬行AWS Glue 者程式編目表格。
新增爬行者程式的第一個步驟是使用在資料目錄中建立新資料庫。AWS SDKAPI在開始之前,請確保先使用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/%
下列範例會刪除現有的爬行程式,然後使用 Python for 建立新的檢API索 AWS Glue器。
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 |
integer | int |
bigint | bigint |
decimal | decimal(18,0) |
decimal(p,s) | decimal(p,s) |
real | double |
double precision | double |
布林值 | 布林值 |
char | string |
varchar | string |
varchar(n) | string |
日期 | 日期 |
timestamp | timestamp |
timestamptz | timestamp |