Come posso risolvere l'eccezione "HIVE_CURSOR_ERROR" quando interrogo una tabella in Amazon Athena?
Quando eseguo delle query sulla mia tabella Amazon Athena, ricevo un'eccezione "HIVE_CURSOR_ERROR".
Soluzione
È possibile ottenere questa eccezione in una delle seguenti condizioni:
- Gli oggetti dati nella posizione della tabella sono danneggiati, non sono validi o sono compressi in modo errato.
- I record all'interno dei dati della tabella non sono validi (esempio: un record JSON non valido).
Eccezioni HIVE\ _CURSOR\ _ERROR comuni
Potresti ricevere una delle seguenti eccezioni HIVE\ _CURSOR\ _ERROR in caso di problemi con gli oggetti sottostanti:
- HIVE_CURSOR_ERROR: incorrect header check
- HIVE_CURSOR_ERROR: invalid block type
- HIVE_CURSOR_ERROR: incorrect data check
- HIVE\ _CURSOR\ _ERROR: Unexpected end of input stream
- HIVE_CURSOR_ERROR: invalid stored block lengths
- HIVE_CURSOR_ERROR: invalid distance code
Se di recente hai aggiunto nuovi oggetti alla posizione della tabella di Amazon Simple Storage Service (Amazon S3), assicurati che siano validi e non danneggiati. Scarica gli oggetti e poi ispezionali utilizzando uno strumento appropriato. Ad esempio, decomprimi gli oggetti compressi con GZip per verificare se la compressione è valida.
Se la tua tabella è partizionata, controlla se sei in grado di interrogare singole partizioni. Se nella tabella sono presenti nuove partizioni, è possibile che contengano oggetti non validi.
Eccezioni HIVE\ _CURSOR\ _ERROR specifiche
HIVE_CURSOR_ERROR: Row is not a valid JSON Object
Questo errore viene visualizzato quando una riga all'interno della tabella non è un record JSON valido.
Per risolvere questo problema, procedi come segue:
- Ricrea la tabella aggiungendo la proprietà 'ignore.malformed.json' = 'true'.
- Interroga la nuova tabella per identificare i file con record non validi eseguendo un comando simile al seguente:
SELECT "$path" FROM example_table WHERE example_column = NULL
Per ulteriori informazioni, vedi come risolvere gli errori JSON nelle opzioni Amazon Athena e OpenX JSON SerDe.
HIVE_CURSOR_ERROR: Corrupted uncompressed block
Questo errore viene visualizzato quando gli oggetti nella posizione della tabella vengono compressi utilizzando il formato LZO.
Per evitare di ricevere questo errore con i dati compressi con LZO, ricrea la tabella con INPUTFORMAT "com.hadoop.mapred.DeprecatedLzoTextInputFormat". Ad esempio:
CREATE EXTERNAL TABLE example_table ( example_column_1 STRING, example_column_2 STRING ) STORED AS INPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://example_bucket/example_prefix/'
È inoltre possibile risolvere questo errore utilizzando un formato di compressione diverso.
HIVE_CURSOR_ERROR: Can not read value at 0 in block 0 in file
Questo errore viene visualizzato quando sono presenti oggetti Parquet non validi nel percorso S3. Controlla se i tuoi oggetti Parquet contengono tipi di dati DECIMAL. Se gli oggetti Parquet contengono tipi di dati DECIMAL e sono stati scritti utilizzando Spark, potrebbero essere incompatibili con Hive. Per verificare questa condizione, prova a leggere gli oggetti Parquet da un job Spark.
Se riesci a leggere gli oggetti Parquet usando il job Spark, riscrivi gli oggetti Parquet con la modalità legacy in Spark con la seguente configurazione:
spark.sql.parquet.writeLegacyFormat = true
Per informazioni sulle opzioni di configurazione di Spark per Parquet, consulta la pagina di configurazione nella guida SQL di Spark.
HIVE_CURSOR_ERROR: org.apache.hadoop.io.ArrayWritable cannot be cast to org.apache.hadoop.io.Text
Questo errore viene visualizzato se è stato utilizzato un SerDe errato durante la definizione della tabella. Ad esempio, la tabella potrebbe utilizzare un SerDe JSON e i dati di origine includono oggetti Parquet.
Per risolvere questo errore, controlla i dati di origine e conferma che sia stato utilizzato il SerDe corretto. Per ulteriori informazioni, vedi l'articolo Supported SerDes and data formats.
Informazioni correlate
Contenuto pertinente
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata 3 anni fa
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata 3 anni fa