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à.
Utilizzo del framework Delta Lake in AWS Glue
AWS Glue 3.0 e versioni successive supportano il framework Linux Foundation Delta Lake. Delta Lake è un framework di archiviazione di data lake open source che consente di eseguire transazioni ACID, scalare la gestione dei metadati e unificare lo streaming e l'elaborazione dei dati in batch. Questo argomento descrive le funzionalità disponibili per l'utilizzo dei dati in AWS Glue durante il trasporto o l'archiviazione dei dati in una tabella Delta Lake. Per saperne di più su Delta Lake, consulta la documentazione ufficiale di Delta Lake
È possibile usare AWS Glue per eseguire operazioni di lettura e scrittura sulle tabelle Delta Lake in Amazon S3 o lavorare con le tabelle Delta Lake utilizzando il catalogo di dati AWS Glue. Sono supportate anche operazioni aggiuntive come inserimento, aggiornamento e letture e scritture in batch di tabelleDeltaTable.forPath
. Per ulteriori informazioni sulla libreria Python di Delta Lake, consulta la documentazione Python di Delta Lake.
La tabella seguente elenca la versione di Delta Lake inclusa in ogni versione di AWS Glue.
Versione di AWS Glue | Versione Delta Lake supportata |
---|---|
4.0 | 2.1.0 |
3.0 | 1.0.0 |
Per ulteriori informazioni sui framework data lake supportati da AWS Glue, consulta Utilizzo di framework data lake con processi ETL di AWS Glue.
Abilitazione di Delta Lake per AWS Glue
Per abilitare Delta Lake per AWS Glue, completa le seguenti attività:
-
Specifica
delta
come valore per i parametri del processo--datalake-formats
. Per ulteriori informazioni, consulta Parametri del processo AWS Glue. -
Crea una chiave denominata
--conf
per il tuo processo AWS Glue e impostala sul seguente valore. In alternativa, puoi impostare la seguente configurazione usandoSparkConf
nel tuo script. Queste impostazioni consentono ad Apache Spark di gestire correttamente le tabelle Delta Lake.spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog --conf spark.delta.logStore.class=org.apache.spark.sql.delta.storage.S3SingleDriverLogStore
Il supporto delle autorizzazioni di Lake Formation per le tabelle Delta è abilitato per impostazione predefinita per AWS Glue 4.0. Non è necessaria alcuna configurazione aggiuntiva per la lettura/scrittura su tabelle Delta registrate da Lake Formation. Per leggere una tabella Delta registrata, il ruolo IAM del processo AWS Glue deve disporre dell'autorizzazione SELECT. Per scrivere su una tabella Delta registrata, il ruolo IAM del processo AWS Glue deve disporre dell'autorizzazione SUPER. Per ulteriori informazioni sulla gestione delle autorizzazioni di Lake Formation, consulta Concessione e revoca delle autorizzazioni del catalogo dati.
Utilizzo di una versione differente di Delta Lake
Per utilizzare una versione di Delta lake non supportata da AWS Glue, specifica i tuoi file JAR Delta Lake utilizzando il parametro del processo --extra-jars
. Non includere delta
come valore per il parametro del processo --datalake-formats
. Per utilizzare la libreria Python Delta Lake in questo caso, è necessario specificare i file JAR della libreria utilizzando il parametro del processo --extra-py-files
. La libreria Python è contenuta nei file JAR di Delta Lake.
Esempio: scrittura di una tabella Delta Lake su Amazon S3 e registrazione nel catalogo dati AWS Glue
Il seguente script ETL di AWS Glue dimostra come scrivere una tabella Delta Lake su Amazon S3 e registrarla nel catalogo dati AWS Glue.
Esempio: lettura di una tabella Delta Lake da Amazon S3 tramite il catalogo dati AWS Glue
Il seguente script ETL di AWS Glue legge la tabella Delta Lake creata in Esempio: scrittura di una tabella Delta Lake su Amazon S3 e registrazione nel catalogo dati AWS Glue.
Esempio: inserimento di un DataFrame
in una tabella Delta Lake in Amazon S3 tramite il catalogo dati AWS Glue
Questo esempio inserisce i dati nella tabella Delta Lake creata in Esempio: scrittura di una tabella Delta Lake su Amazon S3 e registrazione nel catalogo dati AWS Glue.
Nota
Questo esempio consente di impostare il parametro del processo --enable-glue-datacatalog
in modo da utilizzare il catalogo dati AWS Glue come metastore Apache Spark Hive. Per ulteriori informazioni, vedi Parametri del processo AWS Glue.
Esempio: lettura di una tabella Delta Lake da Amazon S3 tramite l'API Spark
In questo esempio viene letta una tabella Delta Lake da Amazon S3 tramite l'API Spark.
Esempio: scrittura di una tabella Delta Lake su Amazon S3 tramite Spark
In questo esempio viene scritta una tabella Delta Lake su Amazon S3 tramite Spark.
Esempio: lettura e scrittura della tabella Delta Lake con il controllo delle autorizzazioni di Lake Formation
Questo esempio legge da e scrive su una tabella Delta Lake con il controllo delle autorizzazioni di Lake Formation.
-
Crea una tabella Delta e registrala in Lake Formation
-
Per abilitare il controllo delle autorizzazioni di Lake Formation, devi prima registrare il percorso della tabella Amazon S3 su Lake Formation. Per ulteriori informazioni, consulta la pagina Registrazione di una posizione Amazon S3. Puoi registrarlo dalla console di Lake Formation o utilizzando la CLI AWS:
aws lakeformation register-resource --resource-arn arn:aws:s3:::<s3-bucket>/<s3-folder> --use-service-linked-role --region <REGION>
Una volta registrata una posizione Amazon S3, qualsiasi tabella AWS Glue che punta alla posizione, o a una delle sue sedi secondarie, restituirà il valore del parametro
IsRegisteredWithLakeFormation
come true nella chiamataGetTable
. -
Crea una tabella Delta che punti al percorso registrato di Amazon S3 tramite Spark:
Nota
Di seguito vengono mostrati gli esempi Python.
dataFrame.write \ .format("delta") \ .mode("overwrite") \ .partitionBy("<your_partitionkey_field>") \ .save("s3://<the_s3_path>")
Dopo aver scritto i dati su Amazon S3, usa il crawler AWS Glue per creare una nuova tabella del catalogo Delta. Per ulteriori informazioni, consulta Introduzione al supporto nativo delle tabelle Delta Lake con i crawler AWS Glue
. Puoi anche creare la tabella manualmente tramite l'API
CreateTable
di AWS Glue.
-
Concedi a Lake Formation l'autorizzazione per il ruolo IAM del processo AWS Glue. Puoi concedere le autorizzazioni dalla console di Lake Formation o utilizzando la CLI AWS. Per ulteriori informazioni, consulta la pagina Concessione delle autorizzazioni alla tabella tramite la console di Lake Formation e il metodo delle risorse denominate
Leggi la tabella Delta registrata in Lake Formation. Il codice equivale a leggere una tabella Delta non registrata. Il ruolo IAM del processo AWS Glue deve disporre dell'autorizzazione SELECT affinché la lettura abbia esito positivo.
# Example: Read a Delta Lake table from Glue Data Catalog df = glueContext.create_data_frame.from_catalog( database="<your_database_name>", table_name="<your_table_name>", additional_options=additional_options )
-
Scrivi sulla tabella Delta registrata in Lake Formation. Il codice equivale a scrivere su una tabella Delta non registrata. Il ruolo IAM del processo AWS Glue deve disporre dell'autorizzazione SUPER affinché la scrittura abbia esito positivo.
Per impostazione predefinita, AWS Glue utilizza
Append
come saveMode. È possibile modificarlo impostando l'opzione saveMode inadditional_options
. Per informazioni sul supporto saveMode nelle tabelle Delta, consulta Scrivi su una tabella. glueContext.write_data_frame.from_catalog( frame=dataFrame, database="<your_database_name>", table_name="<your_table_name>", additional_options=additional_options )