Registrare cataloghi di bucket di tabelle S3 e consultare le tabelle di Athena
I bucket di tabelle Amazon S3 sono un tipo di bucket in Amazon S3 progettato appositamente per archiviare dati tabulari nelle tabelle Apache Iceberg. I bucket di tabella automatizzano le attività di gestione delle tabelle come la compattazione, la gestione delle istantanee e la rimozione di oggetti inutili per ottimizzare continuamente le prestazioni delle query e ridurre al minimo i costi. Sia per chi è agli inizi sia per chi ha migliaia di tabelle nel proprio ambiente Iceberg, i bucket di tabella semplificano i data lake a qualsiasi dimensione. Per ulteriori informazioni sui bucket, consultare Bucket di tabella.
Considerazioni e limitazioni
-
Tutte le operazioni DDL supportate per le tabelle Iceberg sono supportate anche per le tabelle S3 con le seguenti eccezioni:
-
ALTER TABLE RENAME,CREATE VIEWeALTER DATABASEnon sono supportate. -
OPTIMIZEeVACUUM: è possibile controllare compattazione e la gestione delle istantanee in S3. Per ulteriori informazioni, consultare Documentazione per la manutenzione di Tabelle S3.
-
-
Le query DDL sulle tabelle S3 registrate come origini dati Athena non sono supportate.
-
Il riutilizzo dei risultati delle query non è supportato.
-
Nei gruppi di lavoro con SSE-KMS, crittografia CSE-KMS abilitata, non è possibile eseguire operazioni di scrittura come
INSERT,UPDATE,DELETEoMERGEsu tabelle S3. -
Nei gruppi di lavoro con l'opzione S3 Requester Pays abilitata, non è possibile eseguire operazioni DML su tabelle S3.
Eseguire query su tabelle S3 da Athena
Completare questi passaggi preliminari prima di eseguire query su Tabelle S3 in Athena
Creare un bucket per tabelle S3 Per ulteriori informazioni, consultare Creazione di un bucket per tabelle nella Guida per l'utente di Amazon Simple Storage Service.
-
Assicurarsi che l'integrazione dei bucket di tabelle con AWS Glue Data Catalog e AWS Lake Formation abbia successo seguendo i Prerequisiti per l'integrazione e Integrazione dei bucket di tabelle con i servizi di analisi AWS nella Guida per l'utente di Amazon Simple Storage Service.
Nota
Se è stata abilitata l'integrazione durante la creazione di un bucket di tabelle S3 dalla console S3 nel passaggio 1, è possibile saltare questo passaggio.
Per il principale utilizzato per eseguire le query con Athena, concedere le autorizzazioni Lake Formation sul catalogo tabelle S3, tramite la console Lake Formation oppure AWS CLI.
Inviare query per Tabelle S3
Inviare una query
CREATE DATABASEda Athena con l'utente/ruolo di cui sopra. In questo esempio,s3tablescatalogè il Catalogo dati Glue principale creato dall'integrazione es3tablescatalog/è il Catalogo dati Glue secondario creato per ogni bucket di tabelle S3. Esistono due modi per eseguire una query.amzn-s3-demo-bucket-
Con il database creato nel passaggio precedente, utilizzare
CREATE TABLEper creare una tabella. L'esempio seguente crea una tabella nel databasecreato in precedenza nel catalogo Gluetest_namespaces3tablescatalog/.amzn-s3-demo-bucket -
Inserire i dati nella tabella creata nel passaggio precedente.
-
Dopo aver inserito i dati nella tabella, è possibile eseguirci una query.
Creare tabelle S3 in Athena
Athena supporta la creazione di tabelle nei namespace di tabelle S3 esistenti o nei namespace creati in Athena con istruzioni CREATE DATABASE. Per creare una tabella S3 da Athena, la sintassi è la stessa di quando si crea una normale tabella Iceberg, tranne che non si specifica il LOCATION, come mostrato nell'esempio seguente.
CREATE TABLE [db_name.]table_name (col_name data_type [COMMENT col_comment] [, ...] ) [PARTITIONED BY (col_name | transform, ... )] [TBLPROPERTIES ([, property_name=property_value] )]
È possibile creare anche tabelle S3 utilizzando le istruzioni CREATE TABLE AS SELECT (CTAS). Per ulteriori informazioni, consulta CTAS per tabelle S3.
Registrare i cataloghi di bucket di tabelle S3 come origini dati Athena
Per registrare i cataloghi di bucket di tabelle S3 con la console Athena, completare i seguenti passaggi.
-
Aprire la console Athena all'indirizzo https://console.aws.amazon.com/athena/
. -
Nel pannello di navigazione scegliere Origini dati e cataloghi.
-
Nella pagina Origini dati e cataloghi, scegliere Crea origine dati.
-
Per Scegli un'origine dati, selezionare Amazon S3 - AWS Glue Data Catalog.
-
Nella sezione AWS Glue Data Catalog, per Account di origine dati, scegliere AWS Glue Data Catalogin questo account.
-
Per Creare una tabella o registrare un catalogo, scegliere Registra un nuovo catalogo AWS Glue.
-
Nella sezione Dettagli origine dati, per Nome origine dati), inserire il nome che si desidera utilizzare per specificare l'origine dati nelle query SQL o utilizzare il nome predefinito che viene generato.
-
Per Catalogo, scegliere Sfoglia per cercare un elenco di cataloghi AWS Glue nello stesso account. Se non si vede alcun catalogo esistente, crearne uno nella console AWS Glue
. -
Nella finestra di dialogo Sfoglia cataloghi AWS Glue, selezionare il catalogo che si desidera utilizzare, quindi selezionare Scegli.
-
(Facoltativo) Per Tag, inserire le coppie chiave/valore da associare all'origine dati.
-
Scegliere Successivo.
-
Nella pagina Rivedi e crea, esaminare le informazioni inserite, quindi scegliere Crea origine dati.
CTAS per tabelle S3
Amazon Athena ora supporta le operazioni CREATE TABLE AS SELECT (CTAS) per le tabelle S3. Questa funzionalità consente di creare nuove tabelle S3 in base ai risultati di una query SELECT.
Quando si crea una query CTAS per una tabella S3, ci sono alcune importanti differenze rispetto alle tabelle Athena standard:
-
È necessario omettere la proprietà posizione perché le tabelle S3 gestiscono automaticamente le proprie posizioni di archiviazione.
-
La proprietà
table_typeè impostata suICEBERG, quindi non è necessario specificarla esplicitamente nella query. -
Se non si specifica un formato, il sistema utilizza automaticamente
PARQUETcome formato predefinito per i dati. -
Tutte le altre proprietà seguono la stessa sintassi delle normali tabelle Iceberg.
Prima di creare tabelle S3 utilizzando CTAS, assicurarsi di avere le autorizzazioni necessarie configurate in AWS Lake Formation. In particolare, sono necessarie le autorizzazioni per creare tabelle nel catalogo Tabelle S3. Senza queste autorizzazioni, le operazioni CTAS falliranno.
Nota
Se una query CTAS fallisce, potrebbe essere necessario eliminare la tabella utilizzando l'API Tabelle S3 prima di tentare di rieseguire la query. Non è possibile usare le istruzioni Athena DROP TABLE per rimuovere la tabella che è stata parzialmente creata dalla query.
Esempio
CREATE TABLE "s3tablescatalog/amzn-s3-demo-bucket"."namespace"."s3-table-name" WITH ( format = 'PARQUET' ) AS SELECT * FROMsource_table;