Risoluzione dei problemi in Athena
Il team Athena ha raccolto le seguenti informazioni sulla risoluzione dei problemi dei clienti. Sebbene non siano complete, includono consigli su alcuni problemi comuni relativi a prestazioni, timeout e memoria esaurita.
Argomenti
CREATE TABLE AS SELECT (CTAS)
I dati duplicati si verificano con istruzioni CTAS simultanee
Athena non mantiene la convalida simultanea per CTAS. Assicurarsi che non vi sia nessuna istruzione CTAS duplicata per la stessa posizione nello stesso momento. Anche se un'istruzione CTAS o INSERT INTO ha esito negativo, i dati orfani possono essere lasciati nella posizione dei dati specificata nell'istruzione.
HIVE_TOO_MANY_OPEN_PARTITIONS
Quando si utilizza un'istruzione CTAS per creare una tabella con più di 100 partizioni, potresti ricevere l'errore HIVE_TOO_MANY_OPEN_PARTITIONS: Exceeded limit of 100 open writers for partitions/buckets (HIVE_TOO_MANY_OPEN_PARTITIONS: limite di 100 scrittori aperti per partizioni/bucket superato). Per ovviare questa limitazione, puoi utilizzare un'istruzione CTAS e una serie di istruzioni INSERT INTO che creano o inseriscono fino a 100 partizioni ciascuna. Per ulteriori informazioni, consulta Utilizzare CTAS e INSERT INTO per aggirare il limite di 100 partizioni.
Problemi con i file di dati
Athena non riesce a leggere i file nascosti
Athena considera i file sorgente che iniziano con un trattino basso (_) o un punto (.) come nascosti. Per aggirare questa limitazione, rinominare i file.
Athena legge i file che ho escluso dal crawler AWS Glue
Athena non riconosce l'opzione escludi modelli che specifica un crawler AWS Glue. Ad esempio, se disponi di un bucket Amazon S3 che contiene i file .csv e .json ed escludi i file .json dal crawler, Athena esegue query su entrambi i gruppi di file. Per evitare ciò, posizionare i file che si desidera escludere in una posizione diversa.
HIVE_BAD_DATA: Errore nell'analisi del valore del campo
Questo errore può verificarsi nei seguenti scenari:
-
Il tipo di dati definito nella tabella non corrisponde ai dati di origine oppure un singolo campo contiene diversi tipi di dati. Per le risoluzioni suggerite, consulta La mia query Amazon Athena non ha esito negativo con l'errore "HIVE_BAD_DATA: Errore durante l’analisi del valore del campo per il campo X: Per la stringa di input: "12312845691""
nel Knowledge Center di AWS. -
I valori Null sono presenti in un campo numerico intero. Una soluzione alternativa è creare la colonna con i valori nulli come
stringe quindi utilizzareCASTper convertire il campo in una query, fornendo un valore predefinito0per i valori nulli. Per ulteriori informazioni, consulta Quando eseguo query sui dati CSV in Athena, ricevo l'errore "HIVE_BAD_DATA: Error parsing field value '' for field X: For input string: """nel Portale del sapere AWS.
HIVE_CANNOT_OPEN_SPLIT: Error opening Hive split s3://amzn-s3-demo-bucket
Questo errore può verificarsi quando si esegue una query su un prefisso bucket Amazon S3 con un numero elevato di oggetti. Per ulteriori informazioni, consulta Come risolvere l'errore "HIVE_CANNOT_OPEN_SPLIT: Error opening Hive split s3://awsdoc-example-bucket/: Slow Down" error in Athena?
HIVE_CURSOR_ERROR: com.amazonaws.services.s3.model.AmazonS3Exception: The specified key does not exist
Questo errore si verifica in genere quando un file viene rimosso quando una query è in esecuzione. Eseguire di nuovo la query o controllare il flusso di lavoro per verificare se un altro processo o processo sta modificando i file durante l'esecuzione della query.
HIVE_CURSOR_ERROR: Unexpected end of input stream
Questo messaggio indica che il file è danneggiato o vuoto. Verificare l'integrità del file ed eseguire di nuovo la query.
HIVE_FILESYSTEM_ERROR: Dimensione file non corretta 1234567 per il file
Questo messaggio viene visualizzato quando un file cambia tra la pianificazione e l'esecuzione della query. Di solito ciò si verifica quando un file su Amazon S3 viene sostituito sul posto (ad esempio, viene eseguito PUT su una chiave in cui esiste già un oggetto). Athena non supporta l'eliminazione o la sostituzione del contenuto di un file durante l'esecuzione di una query. Per evitare questo errore, pianificare i processi che sovrascrivono o eliminano i file quando le query non vengono eseguite o scrivono solo dati su nuovi file o partizioni.
HIVE_UNKNOWN_ERROR: Impossibile creare il formato di input
Questo errore può essere dovuto a problemi di questo tipo:
-
Il crawler AWS Glue non è stato in grado di classificare il formato dei dati
-
Alcune proprietà delle definizioni della tabella AWS Glue sono vuote
-
Athena non supporta il formato dati dei file in Amazon S3
Per ulteriori informazioni, consulta Come faccio a risolvere l'errore "Impossibile creare il formato di input" in Athena?
Il percorso S3 fornito per salvare i risultati della query non è valido.
Verificare che sia stato specificato un percorso S3 valido per i risultati della query. Per ulteriori informazioni, consulta Specificare una posizione dei risultati delle query nell'argomento Lavora con i risultati delle query e le query recenti.
Tabelle Delta Lake di Linux Foundation
Lo schema della tabella Delta Lake non è sincronizzato
Quando esegui una query su una tabella Delta Lake contenente uno schema in AWS Glue che è obsoleto, è possibile che venga ricevuto il seguente messaggio di errore:
INVALID_GLUE_SCHEMA: Delta Lake table schema in Glue does not match the most recent schema of the Delta Lake transaction log. Please ensure that you have the correct schema defined in Glue.
Lo schema può diventare obsoleto se viene modificato in AWS Glue dopo essere stato aggiunto ad Athena. Per aggiornare lo schema, completa una delle seguenti operazioni:
-
In AWS Glue, esegui il crawler AWS Glue.
-
In Athena, elimina la tabella e creala di nuovo.
-
Aggiungi manualmente le colonne mancanti utilizzando l'istruzione ALTER TABLE ADD COLUMNS in Athena o modificando lo schema della tabella in AWS Glue.
Query federate
Timeout durante la chiamata a ListTableMetadata
Una chiamata all'API ListTableMetadata può scadere se ci sono molte tabelle nell'origine dati, se l'origine dati è lenta o se la rete è lenta. Per risolvere questo problema, provare a eseguire le seguenti operazioni.
-
Controlla il numero di tabelle: se hai più di 1.000 tabelle, prova a ridurne il numero. Per una risposta
ListTableMetadatapiù rapida, è consigliabile avere meno di 1000 tabelle per catalogo. -
Controlla la configurazione Lambda: il monitoraggio del comportamento della funzione Lambda è fondamentale. Quando utilizzi cataloghi federati, assicurati di esaminare i log di esecuzione della funzione Lambda. In base ai risultati, regola di conseguenza i valori di memoria e timeout. Per identificare eventuali problemi con i timeout, riesamina la configurazione Lambda. Per ulteriori informazioni, consulta Configurazione timeout (console) di funzione nella Guida per gli sviluppatori di AWS Lambda.
-
Controlla i log delle origini dati federate: esamina i log e i messaggi di errore delle origine dati federate per vedere se ci sono problemi o errori. I log possono fornire informazioni preziose sulla causa del timeout.
-
Utilizza
StartQueryExecutionper recuperare i metadati: se disponi di più di 1.000 tabelle, il recupero dei metadati tramite il connettore federato può richiedere più tempo del previsto. Poiché la natura asincrona di StartQueryExecution garantisce che Athena esegua la query nel modo più ottimale, considera l'utilizzo diStartQueryExecutioncome alternativa aListTableMetadata. Gli esempi AWS CLI seguenti mostrano comeStartQueryExecutionpuò essere utilizzato al posto diListTableMetadataper ottenere tutti i metadati delle tabelle nel catalogo di dati.Innanzitutto, esegui una query che ottenga tutte le tabelle, come nell'esempio seguente.
aws athena start-query-execution --region us-east-1 \ --query-string "SELECT table_name FROM information_schema.tables LIMIT 50" \ --work-group "your-work-group-name"Quindi, recupera i metadati di una singola tabella, come nell'esempio seguente.
aws athena start-query-execution --region us-east-1 \ --query-string "SELECT * FROM information_schema.columns \ WHERE table_name = 'your-table-name' AND \ table_catalog = 'your-catalog-name'" \ --work-group "your-work-group-name"Il tempo impiegato per ottenere i risultati dipende dal numero di tabelle nel catalogo.
Per ulteriori informazioni sulla risoluzione dei problemi relativi a query federate, consulta Common_Problems
Errori correlati a JSON
Errori di dati NULL o errati durante il tentativo di leggere i dati JSON
Gli errori di dati NULL o errati quando provi a leggere i dati JSON possono dipendere da molteplici cause diverse. Per identificare le righe che causano errori quando si utilizza OpenX SerDe, imposta ignore.malformed.json su true. I registri non corretti verranno restituiti come NULL. Per ulteriori informazioni, consulta Ricevo messaggi di errore quando cerco di leggere dati JSON su Amazon Athena
HIVE_BAD_DATA: Errore durante l’analisi del valore del campo per il campo 0: impossibile eseguore il casting di java.lang.String su org.openx.data.jsonserde.json.JSONObject
OpenX JSON SerDe genera questo errore quando non riesce a analizzare una colonna in una query Athena. Ciò può accadere se definisci una colonna come map o struct, ma i dati sottostanti sono in realtà string, int o altro tipo primitivo.
HIVE_CURSOR_ERROR: Row is not a valid JSON Object - JSONException: Duplicate key
Questo errore si verifica quando usi Athena per eseguire una query sulle risorse AWS Config che hanno più tag con lo stesso nome con maiuscole/minuscole diverse. La soluzione consiste nell'eseguire CREATE
TABLE utilizzando WITH SERDEPROPERTIES 'case.insensitive'='false' e mappare quindi i nomi. Per ulteriori informazioni su case.insensitive e sulla mappatura, consulta Librerie SerDe JSON. Per maggiori informazioni, consulta Come faccio a risolvere l'errore "HIVE_CURSOR_ERROR: Row is not a valid JSON Object - JSONException: Duplicate key" when reading files from AWS Config in Athena?
Messaggi HIVE_CURSOR_ERROR con JSON formattato
Le librerie Hive JSON SerDe e OpenX JSON SerDe prevedono che ogni documento JSON sia su una singola riga di testo senza caratteri di terminazione riga che separano i campi nel registro. Se il testo JSON è formattato, quando si prova a eseguire una query sulla tabella dopo averla creata, è possibile che venga visualizzato un messaggio di errore come HIVE_CURSOR_ERROR: Row is not a valid JSON Object (HIVE_CURSOR_ERROR: la riga non è un oggetto JSON valido) o HIVE_CURSOR_ERROR: JsonParseException: Unexpected end-of-input: expected close marker for OBJECT (HIVE_CURSOR_ERROR: JSONParseException: fine di input imprevisto: indicatore di chiusura previsto per OBJECT). Per ulteriori informazioni, consulta File di dati JSON
Più registri JSON restituiscono un SELECT COUNT di 1
Se usi OpenX JSON SerDe, assicurati che i registri siano separati da un carattere di a capo. Per maggiori informazioni, consulta La query SELECT COUNT in Amazon Athena restituisce solo un registro, anche se il file di input JSON ha più registri
Impossibile eseguire una query su una tabella creata da un crawler AWS Glue che utilizza un classificatore JSON personalizzato
Il motore Athena non supporta i classificatori JSON personalizzati. Per risolvere il problema, è necessario creare una nuova tabella senza classificatore personalizzato. Per trasformare il JSON, è possibile utilizzare CTAS o creare una vista. Ad esempio, se si lavora con gli array, è possibile utilizzare l'opzione UNNEST per appiattire il JSON. Un'altra opzione è usare un processo ETL AWS Glue che supporta il classificatore personalizzato, convertire i dati in Parquet in Amazon S3 e quindi interrogarli in Athena.
MSCK REPAIR TABLE
Per informazioni sui problemi relativi a MSCK REPAIR TABLE, consulta le sezioni Considerazioni e limitazioni e Risoluzione dei problemi nella pagina MSCK REPAIR TABLE.
Problemi con l'output
Impossibile verificare/creare il bucket di output
Questo errore può verificarsi se il percorso del risultato della query specificato non esiste o se le autorizzazioni corrette non sono presenti. Per ulteriori informazioni, consulta Come faccio a risolvere l'errore "Impossibile verificare/creare il bucket di output" in Amazon Athena?
Il risultato TIMESTAMP è vuoto
Athena richiede il formato Java TIMESTAMP. Per ulteriori informazioni, consulta Quando eseguo una query su una tabella in Amazon Athena, il risultato TIMESTAMP è vuoto
Archivia l'output della query Athena in un formato diverso da CSV
Per impostazione predefinita, Athena restituisce file solo in formato CSV. Per produrre i risultati di una query SELECT in un formato diverso, è possibile utilizzare l'istruzione UNLOAD. Per ulteriori informazioni, consulta UNLOAD. Per configurare il formato di output, è possibile utilizzare anche una query CTAS che utilizzi la proprietà della tabella format. A differenza di UNLOAD, la tecnica CTAS richiede la creazione di una tabella. Per ulteriori informazioni, consulta Come faccio ad archiviare un output di query Athena in un formato diverso da CSV, ad esempio un formato compresso?
Il percorso S3 fornito per salvare i risultati della query non è valido
È possibile ricevere questo messaggio di errore se la posizione del bucket di output non si trova nella stessa Regione della Regione in cui si esegue la query. Per evitare ciò, specificare una posizione dei risultati della query nella Regione in cui si esegue la query. Per conoscere le fasi della , consulta Specificare una posizione dei risultati delle query.
Problemi con il parquet
Impossibile eseguire il casting di org.apache.parquet.io.GroupColumnIO su org.apache.parquet.io.PrimitiveColumnIO
Questo errore è causato da una mancata corrispondenza dello schema Parquet. Una colonna con un tipo non primitivo (ad esempio array) è stato dichiarata come tipo primitivo (ad esempio, string) in AWS Glue. Per risolvere questo problema, controllare lo schema dei dati nei file e confrontarlo con lo schema dichiarato in AWS Glue.
Problemi relativi alle statistiche del parquet
Quando leggi i dati di Parquet, potresti ricevere messaggi di errore simili a quelli che seguono:
HIVE_CANNOT_OPEN_SPLIT: Index x out of bounds for length y HIVE_CURSOR_ERROR: Failed to read x bytes HIVE_CURSOR_ERROR: FailureException at Malformed input: offset=x HIVE_CURSOR_ERROR: FailureException at java.io.IOException: can not read class org.apache.parquet.format.PageHeader: Socket is closed by peer.
Per risolvere questo problema, utilizza la dichiarazione CREATE TABLE o ALTER TABLE SET
TBLPROPERTIES per impostare la proprietà parquet.ignore.statistics Parquet SerDe su true, come illustrato negli esempi seguenti.
Esempio di CREATE TABLE
... ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' WITH SERDEPROPERTIES ('parquet.ignore.statistics'='true') STORED AS PARQUET ...
Esempio di ALTER TABLE
ALTER TABLE ... SET TBLPROPERTIES ('parquet.ignore.statistics'='true')
Per ulteriori informazioni su Parquet Hive SerDe, consulta SerDe Parquet.
Problemi di partizionamento
MSCK REPAIR TABLE non rimuove le partizioni obsolete
Se elimini manualmente una partizione in Amazon S3 e poi esegui MSCK REPAIR TABLE, potresti ricevere il messaggio di errore Partizioni mancanti dal file system. Ciò si verifica perché MSCK REPAIR TABLE non rimuove le partizioni obsolete dai metadati della tabella. Utilizza ALTER TABLE DROP
PARTITION per rimuovere manualmente le partizioni obsolete. Per ulteriori informazioni, consulta la sezione "Risoluzione dei problemi" dell'argomento MSCK REPAIR TABLE.
Errore MSCK REPAIR TABLE
Quando una grande quantità di partizioni (ad esempio, più di 100.000) è associata a una tabella particolare, MSCK REPAIR TABLE può avere esito negativo a causa delle limitazioni della memoria. Per risolvere il limite, usa invece ALTER TABLE ADD PARTITION.
MSCK REPAIR TABLE rileva le partizioni ma non le aggiunge a AWS Glue
Questo problema può verificarsi se un percorso di Amazon S3 è in maiuscolo anziché in minuscolo o una policy IAM non consente l'azione glue:BatchCreatePartition. Per ulteriori informazioni, consultaMSCK REPAIR TABLE rileva le partizioni in Athena ma non le aggiunge a AWS Glue Data Catalog
Gli intervalli di proiezione delle partizioni con il formato data di gg-MM-aaaa-HH-mm-ss o aaaa-MM-gg non funzionano
Per funzionare correttamente, il formato della data deve essere impostato su yyyy-MM-dd
HH:00:00. Per ulteriori informazioni, consulta il post Stack Overflow La proiezione della partizione Athena non funziona come previsto
PARTITION BY non supporta il tipo BIGINT
Converti il tipo di dati in string e riprova.
Nessuna partizione significativa disponibile
Questo messaggio di errore in genere indica che le impostazioni della partizione sono state danneggiate. Per risolvere questo problema, eliminare la tabella e creare una tabella con nuove partizioni.
La proiezione delle partizioni non funziona in combinazione con le partizioni di intervallo
Verificare che l'unità dell'intervallo di tempo projection.<columnName>.interval.unit corrisponda al separatore per le partizioni. Ad esempio, se le partizioni sono delimitate da giorni, l'unità di un intervallo di ore non funzionerà.
Errore di proiezione della partizione quando l'intervallo è specificato da un trattino
Specificando la proprietà della tabella range con un trattino anziché con una virgola ottinei un errore del tipo INVALID_TABLE_PROPERTY: per la stringa di input: ". Assicuratevi che i valori dell'intervallo siano separati da una virgola, non da un trattino. Per ulteriori informazioni, consulta Tipo intero.number-number"
HIVE_UNKNOWN_ERROR: Impossibile creare il formato di input
Una o più partizioni Glue sono dichiarate in un formato diverso poiché ogni partizione Glue ha il proprio formato di input specifico in modo indipendente. Controlla come sono definite le tue partizioni in AWS Glue.
HIVE_PARTITION_SCHEMA_MISMATCH
Se lo schema di una partizione differisce dallo schema della tabella, una query può dare esito negativo con il messaggio di errore HIVE_PARTITION_SCHEMA_MISMATCH.
Per ciascuna tabella all'interno del catalogo dati di AWS Glue che dispone di colonne di partizione, il relativo schema viene memorizzato a livello di tabella e per ogni singola partizione all'interno della tabella. Gli schemi per le partizioni sono popolati da un crawler AWS Glue in base al campione di dati che legge all'interno della partizione.
Quando Athena esegue una query, convalida lo schema della tabella e lo schema qualsiasi partizione necessaria per la query. La convalida confronta i tipi di dati di colonna in ordine e verifica che corrispondano per le colonne che si sovrappongono. Ciò impedisce operazioni inattese, come l'aggiunta o la rimozione di colonne dal centro di una tabella. Se Athena rileva che lo schema di una partizione differisce dallo schema della tabella, Athena potrebbe non essere in grado di elaborare la query e restituisce l'errore HIVE_PARTITION_SCHEMA_MISMATCH.
Vi sono vari modi per risolvere questo problema. In primo luogo, se i dati sono stati aggiunti accidentalmente, è possibile eliminare i file di dati che generano la differenza tra gli schemi, eliminare la partizione e ripetere il crawling dei dati. In secondo luogo, è possibile eliminare la singola partizione ed eseguire quindi MSCK REPAIR all'interno di Athena per ricreare la partizione impiegando lo schema della tabella. Questa seconda opzione funziona solo se si è certi che lo schema applicato continuerà a leggere i dati correttamente.
La tabella SemanticException non è partizionata ma esiste una specifica della partizione
Questo errore può verificarsi in presenza di partizioni definite nell'istruzione CREATE
TABLE. Per ulteriori informazioni, consulta Come faccio a risolvere l'errore "FAILED: SemanticException table is not partitioned but partition spec exists" in Athena?
File _$folder$ di zero byte
Se esegui un'istruzione ALTER TABLE ADD PARTITION e specifichi erroneamente una partizione già esistente e una posizione Amazon S3 errata, vengono creati in Amazon S3 i file segnaposto di zero byte del formato . È necessario rimuovere questi file manualmente.partition_value_$folder$
Per evitare che ciò accada, utilizzare la sintassi ADD IF NOT EXISTS nell'istruzione ALTER TABLE ADD PARTITION, nel modo seguente:
ALTER TABLE table_name ADD IF NOT EXISTS PARTITIION […]
Zero registri restituiti dai dati partizionati
Questo problema può verificarsi per una serie di motivi. Per possibili cause e risoluzioni, consulta Ho creato una tabella in Amazon Athena con partizioni definite, ma quando interrogo la tabella, vengono restituiti zero registri
Consulta anche HIVE_TOO_MANY_OPEN_PARTITIONS.
Autorizzazioni
Errore di accesso negato durante l'esecuzione di query su Amazon S3
Ciò può verificarsi quando non si dispone dell'autorizzazione per leggere i dati nel bucket o l'autorizzazione a scrivere nel bucket dei risultati oppure il percorso Amazon S3 contiene un endpoint della Regione come us-east-1.amazonaws.com. Per ulteriori informazioni, consulta Quando eseguo una query Athena, ottengo un errore "Accesso negato"
Accesso negato con codice di stato "Errore 403" durante l'esecuzione di query DDL su dati crittografati in Amazon S3
Quando è possibile che venga visualizzato il messaggio di errore Accesso negato (Servizio: Amazon S3; Codice di stato: 403; Codice di errore: AccessDenied; ID richiesta: se le condizioni seguenti sono vere:<request_id>)
-
Si esegue una query DDL come
ALTER TABLE ADD PARTITIONoMSCK REPAIR TABLE. -
Hai un bucket con crittografia predefinita configurata per utilizzare
SSE-S3. -
Il bucket ha anche una policy del bucket come la seguente che forza le richieste
PutObjectper indicare gli headerPUTcome"s3:x-amz-server-side-encryption": "true"e"s3:x-amz-server-side-encryption": "AES256".
In un caso come questo, la soluzione consigliata è rimuovere la policy del bucket come quella sopra, dato che la crittografia predefinita del bucket è già presente.
Accesso negato con codice di stato 403 quando si esegue una query su un bucket Amazon S3 in un altro account
Questo errore può verificarsi quando si tenta di eseguire una query su log scritti da un altro Servizio AWS e il secondo account è il proprietario del bucket ma non possiede gli oggetti nel bucket. Per ulteriori informazioni, consulta Ricevo l'eccezione Amazon S3 "Accesso negato con codice di stato 403" in Amazon Athena quando interrogo un bucket in un altro account
Utilizzare le credenziali del ruolo IAM per connettersi al driver Athena JDBC
È possibile recuperare le credenziali temporanee di un ruolo per autenticare la connessione JDBC ad Athena. Le credenziali temporanee hanno una durata massima di 12 ore. Per ulteriori informazioni, consulta Come faccio a utilizzare le credenziali del mio ruolo IAM o passare a un altro ruolo IAM quando mi connetto ad Athena utilizzando il driver JDBC?
Il descrittore di archiviazione della tabella richiesto non è compilato
Ciò può verificarsi quando si tenta di interrogare o visualizzare una tabella per la quale non si dispone delle autorizzazioni necessarie. A tal fine, la soluzione consigliata consiste nel concedere le autorizzazioni DESCRIBE e SELECT per le risorse tramite AWS Lake Formation. Se la risorsa è condivisa tra più account, in cui la risorsa originale esiste nell'account A e si desidera eseguire una query su una risorsa collegata nell'account B. Bisogna assicurarsi che il proprio ruolo disponga dell'autorizzazione DESCRIBE sulla risorsa originale nell'account A e dell'autorizzazione SELECT sulla risorsa collegata nell'account B.
Problemi sintassi delle query
FAILED: NullPointerException Name is null
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à TableType e quindi esegui una query DDL come SHOW CREATE TABLE o MSCK REPAIR TABLE, potresti ricevere il messaggio di errore FAILED: NullPointerException Name is null.
Per risolvere l'errore, specificare un valore per l'attributo TableType TableInput come parte della chiamata API AWS Glue CreateTable o del modello CloudFormation. I valori possibili per TableType includono EXTERNAL_TABLE o VIRTUAL_VIEW.
Questo requisito si applica solo quando si crea una tabella utilizzando l'operazione API AWS Glue CreateTable o il modello AWS::Glue::Table. Se si crea una tabella per Athena utilizzando un'istruzione DDL o un crawler AWS Glue, la proprietà TableType viene definita automaticamente.
Funzione non registrata
Questo errore si verifica quando si tenta di utilizzare una funzione che Athena non supporta. Per un elenco delle funzioni supportate da Athena, consulta Funzioni in Amazon Athena oppure esegui l'istruzione SHOW FUNCTIONS nell'editor di query. Puoi anche scrivere la tua funzione definita dall'utente (UDF). Per ulteriori informazioni, consulta Come faccio a risolvere l'errore di sintassi "funzione non registrata" in Athena?
Eccezioni GENERIC_INTERNAL_ERROR
GENERIC_INTERNAL_ERRORLe eccezioni possono avere diverse cause, tra cui le seguenti:
-
GENERIC_INTERNAL_ERROR: null (GENERIC_INTERNAL_ERROR: nullo): questa eccezione potrebbe essere visualizzata in una delle condizioni seguenti:
-
È presente una mancata corrispondenza dello schema tra il tipo di dati di una colonna nella definizione di tabella e il tipo di dati effettivo del set di dati.
-
Si sta eseguendo una query
CREATE TABLE AS SELECT(CTAS) con sintassi imprecisa.
-
-
GENERIC_INTERNAL_ERROR: parent builder is null (GENERIC_INTERNAL_ERROR: il generatore principale è nullo): questa eccezione può essere visualizzata quando si esegue una query su una tabella con colonne di tipo di dati
arraye si utilizza la libreria OpenCSVSerDe. Il formato OpenCSVSerde non supporta il tipo di datiarray. -
GENERIC_INTERNAL_ERROR: Value exceeds MAX_INT (GENERIC_INTERNAL_ERROR: il valore supera MAX_INT): questa eccezione può essere visualizzata quando la colonna dei dati di origine è definita con il tipo di dati
INTe ha un valore numerico superiore a 2.147.483.647. -
GENERIC_INTERNAL_ERROR: Value exceeds MAX_BYTE (GENERIC_INTERNAL_ERROR: il valore supera MAX_BYTE): questa eccezione può essere visualizzata quando la colonna dei dati di origine ha un valore numerico che supera la dimensione consentita per il tipo di dati
BYTE. Il tipo di datiBYTEequivale aTINYINT.TINYINTè un valore intero firmato a 8 bit in formato a due complementi con un valore minimo pari a -128 e un valore massimo pari a 127. -
GENERIC_INTERNAL_ERROR: Number of partition values does not match number of filters (GENERIC_INTERNAL_ERROR: il numero di valori di partizione non corrisponde al numero di filtri): questa eccezione potrebbe essere visualizzata in caso di partizioni non coerenti su dati Amazon Simple Storage Service (Amazon S3). È possibile che vi siano partizioni non coerenti in una delle seguenti condizioni:
-
Le partizioni su Amazon S3 sono cambiate (ad esempio, sono state aggiunte nuove partizioni).
-
Il numero di colonne di partizione nella tabella non corrisponde a quello dei metadati della partizione.
-
Per informazioni più dettagliate su ciascuno di questi errori, consulta Come posso risolvere l'errore "GENERIC_INTERNAL_ERROR" quando eseguo una query su una tabella in Amazon Athena?
Il numero di gruppi corrispondenti non corrisponde al numero di colonne
Questo errore si verifica quando si utilizza SerDe Regex in un'istruzione CREATE TABLE e il numero di gruppi corrispondenti regex non corrisponde al numero di colonne specificate per la tabella. Per ulteriori informazioni, consulta Come faccio a risolvere l'errore RegexSerde "Il numero di gruppi corrispondenti non corrisponde al numero di colonne" in Amazon Athena?
queryString non è riuscito a soddisfare il vincolo: il membro deve avere una lunghezza inferiore o uguale a 262144
La lunghezza massima della stringa di query in Athena (262.144 byte) non è una quota regolabile. Supporto AWS non può aumentare la quota per te, ma puoi aggirare il problema dividendo query lunghe in quelle più piccole. Per ulteriori informazioni, consulta Come faccio ad aumentare la lunghezza massima della stringa di query in Athena?
SYNTAX_ERROR: Impossibile risolvere la colonna
Questo errore può verificarsi quando si esegue una query su una tabella creata da un crawler AWS Glue da un file CSV con codifica UTF-8 che dispone di un byte order mark (BOM). AWS Glue non riconosce i BOM e li sostituisce con punti interrogativi, che Amazon Athena non riconosce. La soluzione è rimuovere il punto interrogativo in Athena o in AWS Glue.
Troppi argomenti per la chiamata di funzione
Nella versione 3 del motore Athena, le funzioni non possono accettare più di 127 argomenti. Questa limitazione è di progettazione. Se si utilizza una funzione con più di 127 parametri, viene visualizzato un messaggio di errore come il seguente:
TOO_MANY_ARGUMENTS: riga .nnn:nn: Numero di argomenti eccessivo per la chiamata di funzione function_name()
Per risolvere questo problema, utilizzare un numero inferiore di parametri per chiamata di funzione.
Problemi di timeout delle query
Se si verificano errori di timeout con le query Athena, controlla i log di CloudTrail. Le query possono scadere a causa della limitazione (della larghezza di banda della rete) delle nostre API AWS Glue o Lake Formation. Quando si verificano questi errori, i messaggi di errore corrispondenti possono indicare un problema di timeout delle query anziché un problema di limitazione (della larghezza di banda della rete). Per risolvere il problema, puoi controllare i log di CloudTrail prima di contattare Supporto. Per ulteriori informazioni, consulta Log AWS CloudTrail delle query e Registrare le chiamate API di Amazon Athena con AWS CloudTrail.
Per informazioni sui problemi di timeout delle query con le query federate quando si chiama l'API ListTableMetadata, consulta Timeout durante la chiamata a ListTableMetadata.
Problemi di limitazione
Se le tue query superano i limiti di servizi dipendenti come Amazon S3, AWS KMS, AWS Glue oppure AWS Lambda, puoi aspettarti i seguenti messaggi. Per risolvere questi problemi, ridurre il numero di chiamate simultanee provenienti dallo stesso account.
| Servizio | Messaggio di errore |
|---|---|
| AWS Glue | AWSGlueException: frequenza superata. |
| AWS KMS | Hai superato la frequenza con cui puoi chiamare KMS. Riduci la frequenza delle tue chiamate. |
| AWS Lambda |
|
| Amazon S3 | Amazons3Exception: riduci la frequenza delle richieste. |
Per informazioni sui modi per prevenire la limitazione (della larghezza di banda della rete) di Amazon S3 quando usi Athena, consulta Prevenire la limitazione (della larghezza di banda della rete) di Amazon S3.
Visualizzazioni
Le viste create nella struttura di Apache Hive non funzionano in Athena
A causa delle loro implementazioni fondamentalmente diverse, le viste create nella struttura di Apache Hive non sono compatibili con Athena. Per risolvere il problema, ricrea le viste in Athena.
La vista è obsoleta; deve essere ricreata
È possibile ricevere questo errore se la tabella che si trova sotto una vista è stata modificata o eliminata. La risoluzione consiste nel ricreare la vista. Per ulteriori informazioni, consulta Come faccio a risolvere l'errore "La visualizzazione è obsoleta; deve essere ricreata" in Athena?
Gruppi di lavoro
Per informazioni sulla risoluzione dei problemi dei gruppi di lavoro, consulta la sezione Risolvere errori del gruppo di lavoro.
Risorse aggiuntive
Le pagine seguenti forniscono ulteriori informazioni per la risoluzione dei problemi relativi ad Amazon Athena.
Le seguenti risorse AWS possono essere utili:
La risoluzione dei problemi richiede spesso query iterative e scoperta da parte di un esperto o di una community di aiutanti. Se si continuano a riscontrare problemi dopo aver provato i suggerimenti in questa pagina, contattare Supporto AWS (nella Console di gestione AWS fare clic su Support, Support Center) o fare una domanda su AWS re:Post