Conversione dei ETL processi in AWS GlueAWS Schema Conversion Tool - AWS Schema Conversion Tool

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_connectionmetodo 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_<Endpoint-name>_<redshift-database-name>, ad esempio: 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_crawleroperazione.

Durante la creazione di un crawler è necessario tenere conto di alcuni aspetti:

  • Per il nome del crawler è necessario utilizzare il formato <redshift_node_name>_<redshift_database_name>_<redshift_shema_name>, ad esempio: 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