Creazione di tabelle in Athena
È possibile eseguire le istruzioni DDL nella console Athena tramite un driver JDBC oppure ODBC o tramite la procedura Create table form (Crea tabella da). Athena utilizza Apache Hive per definire le tabelle e creare i database, che sono essenzialmente un namespace logico di tabelle. Athena supporta una varietà di librerie serializzatore-deserializzatore (SerDe) per la creazione di tabelle per formati di dati specifici. Per un elenco delle librerie SerDE supportate, consulta Scegliere una SerDe per i propri dati.
Quando si crea un database e una tabella in Athena, si descrivono semplicemente lo schema e il percorso in cui si trovano i dati della tabella in Amazon S3 per l'interrogazione del tempo di lettura. Athena non modifica i dati in Amazon S3. Il database e la tabella, pertanto, hanno un significato leggermente diverso rispetto ai sistemi di database relazionali, i quanto i dati non sono archiviati con la definizione dello schema per il database e la tabella.
Athena memorizza lo schema in AWS Glue Data Catalog e lo utilizza per leggere i dati quando si esegue una query sulla tabella utilizzando SQL. Questo approccio basato sullo schema in lettura, che proietta uno schema sui dati quando si esegue una query, elimina la necessità di caricare o trasformare i dati.
Considerazioni e limitazioni
Di seguito sono riportate alcune importanti limitazioni e considerazioni per le tabelle in Athena.
Considerazioni su Amazon S3
Quando si crea una tabella, è necessario specificare una posizione del bucket Amazon S3 per i dati sottostanti tramite la clausola LOCATION. Considera i seguenti aspetti:
-
Athena è in grado di eseguire la query solamente alla versione più recente di dati su una versione di un bucket Amazon S3 e non è in grado di eseguire la query alle versioni precedenti dei dati.
-
Devi disporre delle autorizzazioni per lavorare con i dati nella posizione Amazon S3 specificata. Per ulteriori informazioni, consulta Controllo dell'accesso ad Amazon S3 da Athena.
-
Athena supporta le query su oggetti archiviati con più classi di storage nello stesso bucket specificato dalla clausola
LOCATION. Ad esempio, è possibile eseguire query sui dati in oggetti archiviati in diverse classi di storage (Standard, Standard-IA e Intelligent-Tiering) in Amazon S3. -
Athena supporta i bucket con Pagamento a carico del richiedente. Per informazioni su come abilitare il Pagamento a carico del richiedente per i bucket con dati di origine per i quali intendi eseguire query in Athena, consulta la sezione Creare un gruppo di lavoro.
-
Ora puoi usare Amazon Athena per eseguire query su oggetti ripristinati dalle classi di archiviazione Amazon S3, S3 Glacier Flexible Retrieval (precedentemente Glacier) e S3 Glacier Deep Archive. Se non abiliti la funzionalità su una tabella prima di eseguire una query, Athena salta tutti gli oggetti S3 Glacier Flexible Retrieval e S3 Glacier Deep Archive della tabella. Per ulteriori informazioni, consulta Eseguire query su oggetti Amazon Glacier ripristinati.
Per informazioni sulle classi di archiviazione, consulta Classi di archiviazione, Modifica della classe di archiviazione di un oggetto in Amazon S3, Trasferimento alla classe di archiviazione GLACIER (archiviazione di oggetti) e Bucket con pagamento a carico del richiedente nella Guida per l'utente di Amazon Simple Storage Service.
-
Se si esegue le query sui bucket Amazon S3 con un numero elevato di oggetti e i dati non sono partizionati, queste query possono influenzare i limiti del tasso di richieste Get in Amazon S3 e comportare eccezioni Amazon S3. Per evitare errori, partiziona i dati. Inoltre, considera di ottimizzare i tassi di richiesta Amazon S3. Per ulteriori informazioni, consulta Considerazioni sul tasso di richiesta e sulle prestazioni.
Per ulteriori informazioni sulla definizione di una posizione per i dati in Amazon S3, consulta. Specificare la posizione di una tabella in Amazon S3
Altre considerazioni
-
Athena non supporta le operazioni basate su transazioni (ad esempio, quelle che si trovano in Hive o Presto) sulla tabella dei dati. Per un elenco completo di parole chiave non supportate, consulta la sezione DDL non supportati.
-
Le operazioni di creazione, aggiornamento ed eliminazione delle tabelle sono conformi ad ACID. Ad esempio, se più utenti o client tentano di creare o modificare una tabella esistente nello stesso momento, solo uno di loro potrà eseguire l'operazione.
-
Tranne che durante la creazione di tabelle Iceberg, utilizza sempre la parola chiave . Se utilizzi
CREATE TABLEsenza la parola chiaveEXTERNALper le tabelle non Iceberg, Athena genera un errore. Quando si elimina una tabella in Athena, solo i metadati della tabella vengono rimossi, mentre i dati rimangono in Amazon S3. -
Lunghezza massima della stringa di query: la lunghezza massima della stringa di query è 256 KB.
Se utilizzi l'operazione dell'API AWS Glue CreateTable o il modello CloudFormation
AWS::Glue::Tableper creare una tabella da utilizzare in Athena senza specificare la proprietàTableTypee quindi esegui una query DDL comeSHOW CREATE TABLEoMSCK REPAIR TABLE, potresti ricevere il messaggio di erroreFAILED: NullPointerException Name is null.Per risolvere l'errore, specificare un valore per l'attributo
TableTypeTableInput come parte della chiamata API AWS GlueCreateTableo del modello CloudFormation. I valori possibili perTableTypeincludonoEXTERNAL_TABLEoVIRTUAL_VIEW.Questo requisito si applica solo quando si crea una tabella utilizzando l'operazione API AWS Glue
CreateTableo il modelloAWS::Glue::Table. Se si crea una tabella per Athena utilizzando un'istruzione DDL o un crawler AWS Glue, la proprietàTableTypeviene definita automaticamente.