Come posso risolvere gli errori delle tabelle di Apache Iceberg in Athena?
Ricevo errori quando utilizzo una tabella Apache Iceberg in Amazon Athena.
Risoluzione
Segui i passaggi corrispondenti alla risoluzione dell'errore che riscontri.
Chiave di proprietà della tabella non supportata
Questo errore si verifica quando la clausola TBLPROPERTIES dell'istruzione CREATE TABLE o ALTER TABLE non utilizza una proprietà della tabella supportata. Quando crei o modifichi tabelle Iceberg, Athena consente solo un elenco predefinito di coppie chiave-valore nelle proprietà della tabella.
Per risolvere il problema, assicurati che la tabella Iceberg utilizzi le proprietà della tabella supportate.
Athena non è in grado di generare l'istruzione CREATE TABLE perché la tabella ha proprietà non supportate
Ricevi un errore "UNSUPPORTED" quando Athena non riesce a riprodurre la struttura della tabella perché nella query è stata utilizzata l'istruzione DDL SHOW CREATE TABLE. Utilizza invece l'istruzione DDL DESCRIBE FORMATTED per mostrare le proprietà della tabella.
Ricevi l'errore "TABLE_REDIRECTION_ERROR"
Questo errore si verifica con le query Athena SELECT che utilizzano metadati di tabelle Iceberg non supportati. Assicurati che la query Athena SELECT contenga metadati della tabella Query Iceberg supportati.
Ricevi l'errore "Unsupported Hive type"
Questo errore si verifica quando utilizzi un tipo di dati non supportato con una tabella Iceberg. Ad esempio, potresti ricevere l'errore "SHORT, use integer" perché le tabelle Iceberg non supportano i tipi di dati Athena tinyint o smallint. Oppure potresti ricevere l'errore "CHAR, use string" perché le tabelle Iceberg non supportano i tipi di dati Athena char.
Per risolvere il problema, verifica che la query Athena utilizzi un tipo di dati supportato per le tabelle Iceberg.
Ricevi l'errore "ICEBERG_COMMIT_ERROR"
Questo errore può verificarsi quando più istruzioni tentano di modificare lo stesso set di file eseguiti in parallelo per gli aggiornamenti delle tabelle Iceberg. Ad esempio, quando più istruzioni DELETE in parallelo tentano di eliminare lo stesso set di record contemporaneamente.
Per evitare l'errore, intraprendi le seguenti azioni:
- Assicurati che gli aggiornamenti delle query vengano eseguiti in sequenza per evitare l'elaborazione parallela dei dati.
- Implementa un meccanismo di ripetizione con backoff esponenziale quando aggiorni le tabelle Iceberg.
Nota: Athena supporta solo il blocco ottimistico di AWS Glue. Quando modifichi una tabella Iceberg con altri metodi di blocco, potresti causare la perdita di dati e interrompere le transazioni. Per ulteriori informazioni, consulta Optimistic locking (Blocco ottimistico) sul sito web Apache Iceberg.
Ricevi l'errore "NOT_SUPPORTED: Iceberg table updates require at least format version 2"
Questo errore si verifica quando tenti l'operazione DELETE su una tabella Iceberg versione 1. Athena crea e opera solo su tabelle Iceberg versione 2. Assicurati che la tabella Iceberg utilizzi il motore Athena versione 2. Se utilizzi un altro tipo di motore, imposta la proprietà della tabella format-version su 2 per consentire le eliminazioni a livello di riga. Ad esempio, utilizza la versione 2 quando scrivi una tabella Iceberg e la registri nel Catalogo dati AWS Glue. Per ulteriori informazioni, consulta Delete formats (Eliminazione di formati) sul sito web Apache Iceberg.
Ricevi l'errore "GENERIC_INTERNAL_ERROR:"
Ricevi il seguente messaggio di errore:
"GENERIC_INTERNAL_ERROR: com.amazonaws.trino.exceptions.UnrecoverableS3OperationException: com.amazonaws.services.s3.model.AmazonS3Exception: The specified key does not exist"
L'errore si verifica quando elimini un file di metadati, ad esempio un elenco manifesto o metadata.json. La query Athena ha quindi esito negativo. Se non riesci a recuperare correttamente il file, esegui il rollback della tabella in uno snapshot o un timestamp.
Nota: devi eseguire il rollback della tabella in un ambiente Apache Spark, come AWS Glue o Amazon EMR, non nell'editor di query in Athena.
Per eseguire il rollback della tabella sull'ID di uno snapshot specifico, esegui il comando Apache Iceberg roll_to_snapshot:
CALL catalog_name.system.rollback_to_snapshot('your-db.your-table', your-snapshot-id)
Nota: sostituisci your-db, your-table e your-snapshot-id con i tuoi valori.
Per ripristinare la tabella a un timestamp specifico, esegui il comando Apache Iceberg rollback_to_timestamp:
CALL catalog_name.system.rollback_to_timestamp('your-db.your-table', TIMESTAMP 'yyyy-mm-dd hh:mm:ss')
Nota: sostituisci your-db, your-table e yyyy-mm-dd hh:mm:ss con i tuoi valori.
Per ulteriori informazioni, consulta rollback_to_snapshot and rollback_to_timestamp sul sito web Apache Iceberg.
Informazioni correlate
Come posso usare Apache Iceberg con un Catalogo dati AWS Glue multi-account in Spark?
- Argomenti
- Analytics
- Lingua
- Italiano
Video correlati

