將ETL處理程序轉換 AWS Glue 為 AWS Schema Conversion Tool - AWS Schema Conversion Tool

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將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