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 Iceberg in AWS Aderenza
AWS Glue 3.0 e versioni successive supportano il framework Apache Iceberg per data lake. Iceberg fornisce un formato di tabella ad alte prestazioni che funziona proprio come una tabella SQL. Questo argomento illustra le funzionalità disponibili per l'utilizzo dei dati in AWS Glue durante il trasporto o l'archiviazione dei dati in una tabella Iceberg. Per ulteriori informazioni su Iceberg, consulta la documentazione ufficiale di Apache Iceberg
Puoi usare AWS Glue per eseguire operazioni di lettura e scrittura su tabelle Iceberg in Amazon S3 o lavorare con le tabelle Iceberg utilizzando il AWS Glue Data Catalog. Sono supportate anche operazioni aggiuntive, tra cui inserimenti e tutte le query Spark
Nota
ALTER TABLE … RENAME TO non è disponibile per Apache Iceberg 0.13.1 per AWS Glue 3.0.
La tabella seguente elenca la versione di Iceberg inclusa in ciascuna versione di Glue. AWS
| AWS Versione Glue | Versione Iceberg supportata |
|---|---|
| 5.1 | 1.10.0 |
| 5.0 | 1.7.1 |
| 4.0 | 1.0.0 |
| 3.0 | 0.13.1 |
Per saperne di più sui framework di data lake supportati da AWS Glue, consulta. Utilizzo di framework di data lake con AWS Glue processi ETL
Abilitazione del framework Iceberg
Per abilitare Iceberg for AWS Glue, completa le seguenti attività:
-
Specifica
icebergcome valore per i parametri del processo--datalake-formats. Per ulteriori informazioni, consulta Utilizzo dei parametri del lavoro in AWS Lavori di incollaggio. -
Crea una chiave denominata
--confper il tuo job AWS Glue e impostala sul valore seguente. In alternativa, puoi impostare la seguente configurazione usandoSparkConfnel tuo script. Queste impostazioni consentono ad Apache Spark di gestire correttamente le tabelle Iceberg.spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions --conf spark.sql.catalog.glue_catalog=org.apache.iceberg.spark.SparkCatalog --conf spark.sql.catalog.glue_catalog.warehouse=s3://<your-warehouse-dir>/ --conf spark.sql.catalog.glue_catalog.catalog-impl=org.apache.iceberg.aws.glue.GlueCatalog --conf spark.sql.catalog.glue_catalog.io-impl=org.apache.iceberg.aws.s3.S3FileIOSe stai leggendo o scrivendo su tabelle Iceberg registrate con Lake Formation, segui le indicazioni contenute Utilizzo AWS Glue con AWS Lake Formation per un controllo granulare degli accessi in AWS Glue 5.0 e versioni successive. In AWS Glue 4.0, aggiungi la seguente configurazione per abilitare il supporto di Lake Formation.
--conf spark.sql.catalog.glue_catalog.glue.lakeformation-enabled=true --conf spark.sql.catalog.glue_catalog.glue.id=<table-catalog-id>Se utilizzi AWS Glue 3.0 con Iceberg 0.13.1, devi impostare le seguenti configurazioni aggiuntive per utilizzare Amazon DynamoDB lock manager per garantire la transazione atomica. AWS Glue 4.0 o versioni successive utilizza il blocco ottimistico per impostazione predefinita. Per ulteriori informazioni, consulta Iceberg AWS Integrations
nella documentazione ufficiale di Apache Iceberg. --conf spark.sql.catalog.glue_catalog.lock-impl=org.apache.iceberg.aws.glue.DynamoLockManager --conf spark.sql.catalog.glue_catalog.lock.table=<your-dynamodb-table-name>
Utilizzo di una versione differente di Iceberg
Per utilizzare una versione di Iceberg non supportata da AWS Glue, specifica i tuoi file JAR Iceberg utilizzando il parametro job. --extra-jars Non includere iceberg come valore per il parametro --datalake-formats. Se usi AWS Glue 5.0 o versioni successive, devi impostare il parametro --user-jars-first true job.
Abilitazione della crittografia per le tabelle Iceberg
Nota
Le tabelle Iceberg dispongono di meccanismi propri per abilitare la crittografia lato server. È necessario abilitare questa configurazione in aggiunta alla configurazione di sicurezza di AWS Glue.
Per abilitare la crittografia lato server sulle tabelle Iceberg, consulta le indicazioni contenute nella documentazione di Iceberg
Aggiungere la configurazione Spark per Iceberg su più Regioni
Per aggiungere un'ulteriore configurazione Spark per l'accesso alle tabelle interregionali di Iceberg con il AWS Glue Data Catalog AWS Lake Formation, segui i passaggi seguenti:
Crea un punto di accesso Multi-region .
Configurare le seguenti proprietà Spark:
----- --conf spark.sql.catalog.my_catalog.s3.use-arn-region-enabled=true \ --conf spark.sql.catalog.{CATALOG}.s3.access-points.bucket1", "arn:aws:s3::<account-id>:accesspoint/<mrap-id>.mrap \ --conf spark.sql.catalog.{CATALOG}.s3.access-points.bucket2", "arn:aws:s3::<account-id>:accesspoint/<mrap-id>.mrap -----
Specificare la versione del formato della tabella Iceberg
AWS Glue 6.0 supporta le versioni in formato Iceberg tabella 2 e 3. Per impostazione predefinita, AWS Glue crea tabelle Iceberg v2. Icebergv3 introduce funzionalità aggiuntive, come il tipo di dati VARIANT, i timestamp con precisione in nanosecondi e i tipi di dati geospaziali.
Per creare tabelle v3, puoi attivarle utilizzando uno dei seguenti metodi:
-
Per tabella: imposta la proprietà format-version table quando crei la tabella.
CREATE TABLE glue_catalog.your_database.your_tableUSING iceberg TBLPROPERTIES ('format-version'='3') AS SELECT ... -
Catalog-wide — Imposta la versione di formato predefinita nel catalogo per la Spark sessione. Le nuove tabelle vengono quindi create come v3 per impostazione predefinita, senza impostare la proprietà su ciascuna tabella.
--conf spark.sql.catalog.glue_catalog.table-default.format-version=3
Per aggiornare una tabella v2 esistente alla v3, imposta la proprietà della tabella utilizzando ALTER TABLE. Si tratta di una modifica immediata dei metadati e non riscrive i file di dati.
ALTER TABLE glue_catalog.your_database.your_tableSET TBLPROPERTIES ('format-version'='3')
L'aggiornamento alla v3 è una modifica unidirezionale
Prima di adottare la Iceberg v3, considera quanto segue:
-
Non puoi effettuare il downgrade di una tabella dalla v3 alla v2. Icebergrifiuta l'impostazione
'format-version'='2'su una tabella v3, quindi pianifica di adottare la v3 come modifica unidirezionale. -
Se utilizzi un altro servizio che non supporta la Iceberg v3, mantienilo come tabella Iceberg v2 anziché aggiornarlo alla v3.
Esempio: scrivi una tabella Iceberg su Amazon S3 e registrala nel AWS Catalogo dati Glue
Questo script di esempio dimostra come scrivere una tabella Iceberg su Amazon S3. L'esempio utilizza Iceberg AWS
Integrations
In alternativa, è possibile scrivere una tabella Iceberg su Amazon S3 e catalogo dati tramite metodi Spark.
Prerequisiti: è necessario fornire un catalogo per l'utilizzo della libreria Iceberg. Quando si utilizza il AWS Glue Data Catalog, AWS Glue lo rende semplice. Il AWS Glue Data Catalog è preconfigurato per essere utilizzato dalle librerie Spark come. glue_catalog Le tabelle del Data Catalog sono identificate da a databaseName e a. tableName Per ulteriori informazioni sul AWS Glue Data Catalog, vedereScoperta e catalogazione dei dati in AWS Glue.
Se non utilizzi il AWS Glue Data Catalog, dovrai fornire un catalogo tramite le API Spark. Per ulteriori informazioni, consulta la pagina Spark Configuration
In questo esempio viene scritta una tabella Iceberg in Amazon S3 e il catalogo dati tramite Spark.
Esempio: leggi una tabella Iceberg da Amazon S3 utilizzando AWS Catalogo dati Glue
Questo esempio legge la tabella Iceberg che creata in Esempio: scrivi una tabella Iceberg su Amazon S3 e registrala nel AWS Catalogo dati Glue.
Esempio: inserisci un DataFrame in una tabella Iceberg in Amazon S3 utilizzando AWS Catalogo dati Glue
Questo esempio inserisce i dati nella tabella Iceberg creata in Esempio: scrivi una tabella Iceberg su Amazon S3 e registrala nel AWS Catalogo dati Glue.
Nota
Questo esempio richiede di impostare il parametro --enable-glue-datacatalog job per utilizzare il AWS Glue Data Catalog come metastore Apache Spark Hive. Per ulteriori informazioni, consulta Utilizzo dei parametri del lavoro in AWS Lavori di incollaggio.
Esempio: lettura di una tabella Iceberg da Amazon S3 tramite Spark
Prerequisiti: è necessario fornire un catalogo per l'utilizzo della libreria Iceberg. Quando si utilizza il AWS Glue Data Catalog, AWS Glue lo rende semplice. Il AWS Glue Data Catalog è preconfigurato per essere utilizzato dalle librerie Spark come. glue_catalog Le tabelle del Data Catalog sono identificate da a databaseName e a. tableName Per ulteriori informazioni sul AWS Glue Data Catalog, vedereScoperta e catalogazione dei dati in AWS Glue.
Se non utilizzi il AWS Glue Data Catalog, dovrai fornire un catalogo tramite le API Spark. Per ulteriori informazioni, consulta la pagina Spark Configuration
In questo esempio viene letta una tabella Iceberg in Amazon S3 da Catalogo dati tramite Spark.
Esempio: lettura e scrittura della tabella Iceberg con il controllo delle autorizzazioni di Lake Formation
Questo esempio legge da e scrive su una tabella Iceberg con il controllo delle autorizzazioni di Lake Formation.
Nota
Questo esempio funziona solo in AWS Glue 4.0. In AWS Glue 5.0 e versioni successive, segui le istruzioni contenute inUtilizzo AWS Glue con AWS Lake Formation per un controllo granulare degli accessi.
Crea una tabella Iceberg 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 usando la AWS CLI:
aws lakeformation register-resource --resource-arn arn:aws:s3:::<s3-bucket>/<s3-folder> --use-service-linked-role --region <REGION>Una volta registrata una sede Amazon S3, qualsiasi tabella AWS Glue che punta alla posizione (o a una delle sue sedi secondarie) restituirà il valore del
IsRegisteredWithLakeFormationparametro come vero nella chiamata.GetTableCrea una tabella Iceberg che punti al percorso registrato tramite Spark SQL:
Nota
Di seguito vengono mostrati gli esempi Python.
dataFrame.createOrReplaceTempView("tmp_<your_table_name>") query = f""" CREATE TABLE glue_catalog.<your_database_name>.<your_table_name> USING iceberg AS SELECT * FROM tmp_<your_table_name> """ spark.sql(query)Puoi anche creare la tabella manualmente tramite l'API AWS
CreateTableGlue. Per ulteriori informazioni, consulta Creazione di tabelle Apache Iceberg.
Concedi a Lake Formation l'autorizzazione per il ruolo IAM del processo. Puoi concedere le autorizzazioni dalla console di Lake Formation o utilizzando la AWS CLI. Per ulteriori informazioni, consulta: https://docs.aws.amazon.com/lake-formation/latest/dg/granting-table-permissions.html
Leggi una tabella Iceberg registrata con Lake Formation. Il codice equivale a leggere una tabella Iceberg non registrata. Tieni presente che il tuo ruolo IAM di AWS Glue job deve avere l'autorizzazione SELECT affinché la lettura abbia esito positivo.
# Example: Read an Iceberg table from the AWS Glue Data Catalog from awsglue.context import GlueContext from pyspark.context import SparkContext sc = SparkContext() glueContext = GlueContext(sc) df = glueContext.create_data_frame.from_catalog( database="<your_database_name>", table_name="<your_table_name>", additional_options=additional_options )Scrivi su una tabella Iceberg registrata con Lake Formation. Il codice equivale a scrivere su una tabella Iceberg non registrata. Nota che il tuo ruolo IAM di AWS Glue job deve avere l'autorizzazione SUPER perché la scrittura abbia esito positivo.
glueContext.write_data_frame.from_catalog( frame=dataFrame, database="<your_database_name>", table_name="<your_table_name>", additional_options=additional_options )