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à.
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)
- Problemi con i file di dati
- Tabelle Delta Lake di Linux Foundation
- Query federate
- Errori correlati a JSON
- MSCK REPAIR TABLE
- Problemi con l'output
- Problemi con il parquet
- Problemi di partizionamento
- Autorizzazioni
- Problemi sintassi delle query
- Problemi di timeout delle query
- Problemi di limitazione
- Visualizzazioni
- Gruppi di lavoro
- Risorse aggiuntive
- catalogo degli errori Athena
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 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 i pattern di esclusione specificati in un AWS Glue crawler. 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
string
e quindi utilizzareCAST
per convertire il campo in una query, fornendo un valore predefinito0
per 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: errore durante l'apertura di 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, vedi Come posso risolvere l'errore «HIVE_CANNOT_OPEN_SPLIT: Errore nell'apertura di Hive split s3://amzn-s3-demo-bucket/: Slow down» 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 del file non corretta 1234567
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 non è stato in grado di classificare il formato dei dati AWS Glue
-
Alcune proprietà di definizione AWS Glue delle tabelle 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 la posizione dei risultati della query nell'argomento Utilizzare 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 AWS Glue che contiene uno schema obsoleto, puoi ricevere 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 AWS Glue dopo essere stato aggiunto ad Athena. Per aggiornare lo schema, completa una delle seguenti operazioni:
-
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 ListTableMetadata
Una chiamata all'ListTableMetadataAPI 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
ListTableMetadata
più 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
StartQueryExecution
per 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 garantisce StartQueryExecutionche Athena esegua la query nel modo più ottimale, prendi in considerazione l'utilizzoStartQueryExecution
come alternativa a.ListTableMetadata
AWS CLI Gli esempi seguenti mostrano comeStartQueryExecution
può essere utilizzato anziché perListTableMetadata
ottenere tutti i metadati delle tabelle nel catalogo 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.
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 durante l'utilizzo di OpenX SerDe, impostate suignore.malformed.json
. 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 nell'analisi del valore del campo per il campo 0: java.lang.String non può essere trasmesso a 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: La riga non è un oggetto JSON valido -: Chiave duplicata JSONException
Questo errore si verifica quando si utilizza Athena per interrogare AWS Config risorse che hanno più tag con lo stesso nome in maiuscole e minuscole. 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 JSON SerDe biblioteche. Per ulteriori informazioni, vedi Come posso risolvere «HIVE_CURSOR_ERROR: Row is not a valid JSON object - JSONException: Duplicate key»
Messaggi HIVE_CURSOR_ERROR con JSON formattato
Le librerie alveare 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 è in un bel formato di stampa, potresti ricevere un messaggio di errore del tipo HIVE_CURSOR_ERROR: Row is not a valid JSON Object o HIVE_CURSOR_ERROR:: Unexpected JsonParseException end-of-input: il marker di chiusura previsto per OBJECT
quando tenti di interrogare
la tabella dopo averla creata. Per ulteriori informazioni, consulta i 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 ulteriori informazioni, consulta La query SELECT COUNT in Amazon Athena restituisce un solo record anche se il file JSON di input ha più record
Impossibile interrogare una tabella creata da un AWS Glue crawler 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 è utilizzare un processo AWS Glue ETL che supporti 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 posso risolvere l'errore «impossibile verificare/creare un 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 posso archiviare l'output di una 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 le fasi, consulta Specificare la posizione dei risultati della query.
Problemi con il parquet
org.apache.parquet.io. GroupColumnNon è possibile eseguire il cast di IO 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, utilizzate l'ALTER TABLE SET
TBLPROPERTIESistruzione CREATE TABLE or per impostare la SerDe parquet.ignore.statistics
proprietà Parquet sutrue
, 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, vedere. Parquet SerDe
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 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, vedere MSCK REPAIR TABLE rileva le partizioni in Athena ma non le aggiunge
Gli intervalli di proiezione delle partizioni hanno il formato di data -mm-ss oppure non funzionano dd-MM-yyyy-HH yyyy-MM-dd
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
Verificate che l'intervallo temporale corrisponda alla proiezione. <columnName>.interval.unit corrisponde al delimitatore 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 range
tabella con un trattino anziché una virgola si ottiene un errore del tipo INVALID_TABLE_PROPERTY
: per la stringa di input: "-». number
number
Assicuratevi che i valori dell'intervallo siano separati da una virgola, non da un trattino. Per ulteriori informazioni, consulta Tipo intero.
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 ogni tabella all'interno del AWS Glue Data Catalog con colonne di partizione, lo schema viene memorizzato a livello di tabella e per ogni singola partizione all'interno della tabella. Lo schema per le partizioni viene popolato da un AWS Glue crawler basato sul 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.
SemanticException la tabella non è partizionata ma esistono le specifiche della partizione
Questo errore può verificarsi in presenza di partizioni definite nell'istruzione CREATE
TABLE
. Per ulteriori informazioni, vedi Come posso risolvere l'errore «FAILED: la SemanticException tabella non è partizionata ma le specifiche della partizione esistono» 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 soluzioni, vedi Ho creato una tabella in Amazon Athena con partizioni definite, ma quando eseguo una query sulla tabella, nel AWS Knowledge Center non vengono restituiti record
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 potresti ricevere il messaggio di errore Accesso negato (Servizio: Amazon S3; Codice di stato: 403; Codice di errore: AccessDenied; ID richiesta:
se sono vere le seguenti condizioni:<request_id>
)
-
Si esegue una query DDL come
ALTER TABLE ADD PARTITION
oMSCK 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
PutObject
per indicare gli headerPUT
come"s3:x-amz-server-side-encryption": "true"
e"s3:x-amz-server-side-encryption": "AES256"
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::
<resource-name>
/*", "Condition": { "Null": { "s3:x-amz-server-side-encryption": "true" } } }, { "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::<resource-name>
/*", "Condition": { "StringNotEquals": { "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 interrogare i log scritti da un altro account 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 eseguo una query su un bucket in un altro account nel
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, vedi Come posso usare le mie credenziali del ruolo IAM o passare a un altro ruolo IAM quando mi connetto ad Athena utilizzando il
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 DESCRIBE
e utilizzare SELECT
le autorizzazioni per le risorse. AWS Lake Formation Se la risorsa è condivisa tra più account, in cui la risorsa originale esiste nell'account A e desideri eseguire una query su una risorsa collegata nell'account B. Devi assicurarti che il tuo ruolo disponga dell'DESCRIBE
autorizzazione sulla risorsa originale nell'account A e dell'SELECT
autorizzazione sulla risorsa collegata nell'account B.
Problemi sintassi delle query
FALLITO: NullPointerException il nome è nullo
Se si utilizza l'operazione AWS Glue CreateTableAPI o il AWS CloudFormation AWS::Glue::Table
modello per creare una tabella da utilizzare in Athena senza specificare la TableType
proprietà e quindi si esegue una query DDL come SHOW CREATE TABLE
oMSCK REPAIR TABLE
, è possibile ricevere il messaggio di errore FAILED: NullPointerException
Name is null.
Per risolvere l'errore, specifica un valore per l'TableInputTableType
attributo come parte della chiamata o del modello AWS GlueCreateTable
API.AWS 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 AWS Glue
CreateTable
API o il AWS::Glue::Table
modello. 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
Le eccezioni GENERIC_INTERNAL_ERROR
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 è nullo: potresti vedere questa eccezione quando esegui una query su una tabella con colonne di tipo di dati e stai utilizzando la libreria
array
Open De. CSVSer Il formato Open CSVSerde non supporta il tipo di dati.array
-
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
INT
e 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 datiBYTE
equivale 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, vedi 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 Regex SerDe 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 posso risolvere l' RegexSerDe errore «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 puoi aumentare la quota per te, ma puoi risolvere il problema suddividendo le query lunghe in query 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 AWS Glue crawler a partire da un file CSV con codifica UTF-8 e dotato di un byte order mark (BOM). AWS Glue non li riconosce BOMs e li trasforma in 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: line:
per la funzione call (). nnn
nn
: Troppi argomentifunction_name
Per risolvere questo problema, utilizzare un numero inferiore di parametri per chiamata di funzione.
Problemi di timeout delle query
Se riscontri errori di timeout con le tue query su Athena, controlla i log. CloudTrail Le query possono scadere a causa del throttling di o Lake AWS Glue Formation. APIs 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 registri prima di contattarci. CloudTrail Supporto Per ulteriori informazioni, consulta AWS CloudTrail Registri delle interrogazioni e Registra le chiamate Amazon Athena API 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 ListTableMetadata.
Problemi di limitazione
Se le tue richieste superano i limiti dei servizi dipendenti come Amazon S3 AWS KMS,, AWS Lambda o AWS Glue, è possibile che vengano visualizzati i seguenti messaggi. Per risolvere questi problemi, ridurre il numero di chiamate simultanee provenienti dallo stesso account.
Servizio | Messaggio di errore |
---|---|
AWS Glue | AWSGlueEccezione: tariffa 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 Impedisci la limitazione 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, vedi Come posso risolvere l'errore «la vista è obsoleta; deve essere ricreata» in Athena
Gruppi di lavoro
Per informazioni sulla risoluzione dei problemi dei gruppi di lavoro, consulta la sezione Risolvi gli errori del gruppo di lavoro.
Risorse aggiuntive
Le pagine seguenti forniscono ulteriori informazioni per la risoluzione dei problemi relativi ad Amazon Athena.
Anche le seguenti AWS risorse possono essere di aiuto:
La risoluzione dei problemi richiede spesso query iterative e scoperta da parte di un esperto o di una community di aiutanti. Se continui a riscontrare problemi dopo aver provato i suggerimenti in questa pagina, contatta Supporto AWS (nella sezione, fai clic su Support, Support Center) o fai una domanda su AWS re:post