Popolamento e gestione delle tabelle transazionali - AWS Glue

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à.

Popolamento e gestione delle tabelle transazionali

Apache Iceberg, Apache Hudi e Linux Foundation Delta Lake sono formati di tabelle open source progettati per gestire analisi dei dati su larga scala e carichi di lavoro di data lake in Apache Spark.

È possibile popolare le tabelle Iceberg, Hudi e Delta Lake in AWS Glue Data Catalog utilizzando i seguenti metodi:

  • Crawler di AWS Glue; – Crawler di AWS Glue possono scoprire e popolare automaticamente i metadati delle tabelle Iceberg, Hudi e Delta Lake nel catalogo dati. Per ulteriori informazioni, consulta Utilizzo dei crawler per compilare il Catalogo dati .

  • Processi AWS Glue ETL: è possibile creare processi ETL per scrivere dati nelle tabelle Iceberg, Hudi e Delta Lake e popolare i relativi metadati nel catalogo dati. Per ulteriori informazioni, consultare Utilizzo di framework data lake con processi ETL di AWS Glue.

  • Console AWS Glue, console AWS Lake Formation, AWS CLI o API: è possibile utilizzare la console AWS Glue, la console Lake Formation o l'API per creare e gestire definizioni di tabelle Iceberg nel catalogo dati.

Creazione di tabelle Apache Iceberg

È possibile creare tabelle Apache Iceberg che utilizzano il formato di dati Apache Parquet in AWS Glue Data Catalog con dati che risiedono in Amazon S3. Una tabella nel catalogo dati è la definizione dei metadati che rappresenta i dati in un datastore. Per impostazione predefinita, AWS Glue crea tabelle Iceberg v2. Per la differenza tra le tabelle v1 e v2, consulta Modifiche al tipo di formato nella documentazione di Apache Iceberg.

Apache Iceberg è un formato a tabella aperta per set di dati analitici di dimensioni molto grandi. Iceberg consente di modificare facilmente lo schema, operazione nota anche come evoluzione dello schema, il che significa che gli utenti possono aggiungere, rinominare o rimuovere colonne da una tabella di dati senza pregiudicare i dati sottostanti. Iceberg fornisce anche supporto per il controllo delle versioni dei dati, che consente agli utenti di tenere traccia delle modifiche apportate ai dati nel tempo. Ciò abilita la funzionalità di query temporale, che consente agli utenti di accedere e interrogare le versioni storiche dei dati e analizzare le modifiche ai dati tra aggiornamenti ed eliminazioni.

È possibile utilizzare AWS Glue o la console Lake Formation o l'operazione CreateTable nell'API AWS Glue per creare una tabella Iceberg nel catalogo dati. Per ulteriori informazioni, consultare Operazione CreateTable (Python: create_table).

Quando si crea una tabella Iceberg nel catalogo dati, occorre specificare il formato della tabella e il percorso del file dei metadati in Amazon S3 per poter eseguire letture e scritture.

È possibile utilizzare Lake Formation per proteggere la tabella Iceberg utilizzando autorizzazioni di controllo granulare degli accessi quando si registra la posizione di dati di Amazon S3 con AWS Lake Formation. Per i dati di origine in Amazon S3 e i metadati che non sono registrati con Lake Formation, l'accesso è determinato dalle policy di autorizzazione IAM per Amazon S3 e dalle operazioni AWS Glue. Per ulteriori informazioni, consultare Gestione delle autorizzazioni.

Nota

Il catalogo dati non supporta la creazione di partizioni e l'aggiunta di proprietà delle tabelle Iceberg.

Prerequisiti

Per creare tabelle Iceberg nel catalogo dati e configurare le autorizzazioni di accesso ai dati di Lake Formation, occorre soddisfare i seguenti requisiti:

  1. Autorizzazioni richieste per creare tabelle Iceberg senza i dati registrati con Lake Formation.

    Oltre alle autorizzazioni richieste per creare una tabella nel catalogo dati, il creatore della tabella richiede le seguenti autorizzazioni:

    • s3:PutObject sulla risorsa arn:aws:s3:::{bucketName}

    • s3:GetObject sulla risorsa arn:aws:s3:::{bucketName}

    • s3:DeleteObject sulla risorsa arn:aws:s3:::{bucketName}

  2. Autorizzazioni richieste per creare tabelle Iceberg con dati registrati con Lake Formation:

    Per utilizzare Lake Formation per gestire e proteggere i dati nel data lake, registrare la posizione Amazon S3 che contiene i dati per le tabelle con Lake Formation. In questo modo Lake Formation può fornire credenziali a servizi di analisi AWS come Athena, Redshift Spectrum e Amazon EMR per accedere ai dati. Per ulteriori informazioni su come registrare una posizione Amazon S3, consultare Aggiungere una posizione Amazon S3 al data lake.

    Un principale che legge e scrive i dati sottostanti registrati con Lake Formation richiede le seguenti autorizzazioni:

    • lakeformation:GetDataAccess

    • DATA_LOCATION_ACCESS

      Un principale che dispone di autorizzazioni di localizzazione dei dati in una sede dispone anche delle autorizzazioni di localizzazione su tutte le sedi secondarie.

      Per ulteriori informazioni sulle autorizzazioni di localizzazione dei dati, consultare il link Controlli degli accessi ai dati sottostanti.

Per abilitare la compattazione, il servizio deve assumere un ruolo IAM con le autorizzazioni per aggiornare le tabelle nel catalogo dati. Per maggiori dettagli, consultare Prerequisiti per l'ottimizzazione delle tabelle .

Creazione di una tabella Iceberg

È possibile creare tabelle Iceberg v1 e v2 utilizzando AWS Glue o la console Lake Formation o AWS Command Line Interface come documentato in questa pagina. È anche possibile creare tabelle Iceberg usando Crawler di AWS Glue. Per ulteriori informazioni, consultare Catalogo dati e crawler nella Guida per gli sviluppatori di AWS Glue.

Per creare una tabella Iceberg

Console
  1. Accedi alla Console di gestione AWS, quindi apri la console AWS Glue all'indirizzo https://console.aws.amazon.com/glue/.

  2. In catalogo dati, scegliere Tabelle e utilizzare il pulsante Crea tabella per specificare i seguenti attributi:

    • Nome tabella: inserire un nome per la tabella. Se si utilizza Athena per accedere alle tabelle, utilizzare questi suggerimenti per la denominazione della Guida per l'utente di Amazon Athena.

    • Database: scegliere un database esistente o crearne uno nuovo.

    • Descrizione: la descrizione della tabella. È possibile scrivere una descrizione per aiutare a comprendere i contenuti della tabella.

    • Formato tabella: come Formato tabella, scegliere Apache Iceberg.

    • Abilita compattazione: scegliere Abilita compattazione per compattare piccoli oggetti Amazon S3 nella tabella in oggetti più grandi.

    • Ruolo IAM: per eseguire la compattazione, il servizio assume un ruolo IAM per tuo conto. Puoi scegliere un ruolo IAM utilizzando il menu a discesa. Assicurati che il ruolo disponga delle autorizzazioni necessarie per abilitare la compattazione.

      Per ulteriori informazioni sulle autorizzazioni necessarie per questo ruolo, consultare Prerequisiti per l'ottimizzazione delle tabelle .

    • Posizione: specificare il percorso della cartella in Amazon S3 che memorizza la tabella dei metadati. Iceberg ha bisogno di un file di metadati e di una posizione nel catalogo dati per poter eseguire letture e scritture.

    • Schema: scegliere Aggiungi colonne per aggiungere colonne e tipi di dati delle colonne. Si dispone della possibilità di creare una tabella vuota e di aggiornare lo schema in un secondo momento. Il catalogo dati supporta i tipi di dati Hive. Per ulteriori informazioni, consultare Tipi di dati Hive.

      Iceberg consente di evolvere lo schema e la partizione dopo aver creato la tabella. È possibile usare le query di Athena per aggiornare lo schema della tabella e le query Spark per aggiornare le partizioni.

AWS CLI
aws glue create-table \ --database-name iceberg-db \ --region us-west-2 \ --open-table-format-input '{ "IcebergInput": { "MetadataOperation": "CREATE", "Version": "2" } }' \ --table-input '{"Name":"test-iceberg-input-demo", "TableType": "EXTERNAL_TABLE", "StorageDescriptor":{ "Columns":[ {"Name":"col1", "Type":"int"}, {"Name":"col2", "Type":"int"}, {"Name":"col3", "Type":"string"} ], "Location":"s3://DOC_EXAMPLE_BUCKET_ICEBERG/" } }'
Argomenti