Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Conversione dei ETL processi in AWS GlueAWS Schema Conversion Tool
Nelle sezioni seguenti, puoi trovare una descrizione di una conversione che richiama AWS Glue API operazioni in Python. Per ulteriori informazioni, consulta Program AWS Glue ETL scripts in Python nella Developer Guide AWS Glue .
Fase 1: crea un database
Il primo passaggio consiste nel creare un nuovo database in un catalogo AWS Glue dati utilizzando il. AWS SDKAPI Quando una tabella viene definita nel catalogo dati, viene aggiunta a un database. Un database viene utilizzato per organizzare le tabelle in AWS Glue.
L'esempio seguente dimostra il create_database
metodo del API AWS Glue Python for.
response = client.create_database( DatabaseInput={ 'Name': '
database_name
’, 'Description': 'description
', 'LocationUri': 'string
', 'Parameters': { 'parameter-name
': 'parameter value
' } } )
Se utilizzi Amazon Redshift, il nome del database è formato come segue.
{redshift_cluster_name}_{redshift_database_name}_{redshift_schema_name}
Il nome completo del cluster Amazon Redshift per questo esempio è il seguente.
rsdbb03.apq1mpqso.us-west-2.redshift.amazonaws.com
L’esempio seguente mostra un nome di database valido. In questo caso, rsdbb03
è il nome, che è la prima parte del nome completo dell’endpoint del cluster. Il nome del database è dev
e lo schema è ora_glue
.
rsdbb03_dev_ora_glue
Fase 2: creare una connessione
Crea una nuova connessione in un catalogo dati utilizzando AWS SDKAPI.
L'esempio seguente dimostra l'utilizzo del create_connection
metodo API AWS Glue Python for.
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
' ] } } )
I parametri utilizzati in create_connection
sono i seguenti:
-
Name
(UTF-8 stringhe) — obbligatorio. Per Amazon Redshift, il nome della connessione è formato come segue:Redshift_
, ad esempio:<Endpoint-name>
_<redshift-database-name>
Redshift_abcde03_dev
-
Description
(UTF-8 stringhe): la tua descrizione della connessione. -
ConnectionType
(UTF-8 string) — Obbligatorio. Il tipo di connessione. Attualmente, solo JDBC è supportato; non SFTP è supportato. -
ConnectionProperties
(dict) — Obbligatorio. Un elenco di coppie chiave-valore utilizzate come parametri per questa connessione, tra cui JDBC connessioneURL, nome utente e password. -
PhysicalConnectionRequirements
(dict) — Requisiti di connessione fisica, che includono quanto segue:-
SubnetId
(UTF-8 string) — L'ID della sottorete utilizzata dalla connessione. -
SecurityGroupIdList
(elenco) — L'elenco degli ID del gruppo di sicurezza utilizzato dalla connessione. -
AvailabilityZone
(UTF-8 stringhe) — Obbligatorio. La zona di disponibilità che contiene l'endpoint. Questo parametro è obsoleto.
-
Fase 3: Creare un crawler AWS Glue
Successivamente, create un AWS Glue crawler per popolare il catalogo. AWS Glue Per ulteriori informazioni, consulta Catalogare le tabelle con un crawler nella Guida per gli sviluppatori.AWS Glue
Il primo passaggio per aggiungere un crawler consiste nel creare un nuovo database in un catalogo dati utilizzando il. AWS SDKAPI Prima di iniziare, assicuratevi di eliminarne tutte le versioni precedenti utilizzando l'delete_crawler
operazione.
Durante la creazione di un crawler è necessario tenere conto di alcuni aspetti:
-
Per il nome del crawler è necessario utilizzare il formato
, ad esempio:<redshift_node_name>
_<redshift_database_name>
_<redshift_shema_name>
abcde03_dev_ora_glue
-
Usa un IAM ruolo già esistente. Per ulteriori informazioni sulla creazione di IAM ruoli, vedere Creazione di IAM ruoli nella Guida IAM per l'utente.
-
È necessario utilizzare il nome del database creato nelle fasi precedenti.
-
Il parametro
ConnectionName
va utilizzato perché è obbligatorio. -
Per il
path
parametro, utilizzate il percorso della JDBC destinazione, ad esempio:dev/ora_glue/%
L'esempio seguente elimina un crawler esistente e quindi ne crea uno nuovo utilizzando 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
' )
Crea e quindi esegui un crawler che si collega a uno o più datastore, determina le strutture dei dati e scrive tabelle nel catalogo dati. È possibile eseguire il crawler secondo un programma, come illustrato di seguito.
response = client.start_crawler( Name='string' )
Questo esempio utilizza Amazon Redshift come destinazione. I tipi di dati di Amazon Redshift vengono AWS Glue mappati ai tipi di dati nel modo seguente dopo l'esecuzione del crawler.
Tipo di dati Amazon Redshift | AWS Glue tipo di dati |
smallint | smallint |
integer | int |
bigint | bigint |
decimal | decimal(18,0) |
decimal(p,s) | decimal(p,s) |
real | double |
double precision | double |
Booleano | Booleano |
char | Stringa |
varchar | Stringa |
varchar(n) | Stringa |
date | date |
timestamp | timestamp |
timestamptz | timestamp |