AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
Come posso risolvere l'errore "GENERIC_INTERNAL_ERROR" che ricevo quando eseguo query su una tabella in Athena?
Quando eseguo query sulla mia tabella Amazon Athena, ricevo l'errore "GENERIC_INTERNAL_ERROR".
Risoluzione
"GENERIC_INTERNAL_ERROR: null"
Mancata corrispondenza tra i tipi di dati delle colonne
Assicurati che il tipo di dati delle colonne nella definizione della tabella sia compatibile con il tipo di dati delle colonne nei dati di origine. Athena utilizza la tecnologia schema-on-read. Quando Athena elabora le query, applica le definizioni delle tabelle ai dati in Amazon Simple Storage Service (Amazon S3).
Ad esempio, quando crei una tabella in un file Apache Parquet, Athena legge lo schema dal file. Dopodiché, quando esegui query sulla tabella Parquet, Athena convalida lo schema rispetto alla definizione della tabella. Se il tipo di dati di una colonna non corrisponde al tipo di dati della definizione della tabella, viene visualizzato l'errore "Column data type mismatch".
In caso di mancata corrispondenza dello schema tra i file di dati di origine e la definizione della tabella, intraprendi una delle seguenti azioni:
- Utilizza AWS Glue per aggiornare lo schema.
- Utilizza la definizione aggiornata della tabella per creare una nuova tabella.
Inoltre, controlla se i file di dati di origine sono danneggiati. Se trovi file di dati di origine danneggiati, eliminali ed esegui query sulla tabella.
Sintassi imprecisa
Potresti ricevere l'errore "GENERIC INTERNAL ERROR: null" quando entrambe le seguenti condizioni sono vere:
- Hai utilizzato una query CTAS per creare la tabella.
- Hai utilizzato lo stesso nome di colonna per le proprietà della tabella partitioned_by e bucketed_by.
Quando si utilizza la query CTAS, devi utilizzare nomi di colonna diversi per le proprietà partitioned_by e bucketed_by. Per risolvere il problema, crea una nuova tabella e scegli nomi di colonna diversi per partitioned_by e bucketed_by.
"GENERIC_INTERNAL_ERROR: parent builder is null"
Potresti ricevere l'errore quando esegui una query su una tabella con colonne array e il formato OpenCSVSerde. Il formato OpenCSVSerDE non supporta il tipo di dati array.
Per risolvere il problema, modifica la colonna con il tipo di dati array in stringa. Puoi utilizzare la console AWS Glue o eseguire un comando per modificare il tipo di dati della colonna. Oppure crea una nuova tabella.
Modifica il tipo di dati della colonna
Per utilizzare la console, completa i seguenti passaggi:
- Apri la console AWS Glue.
- Nel riquadro di navigazione, scegli Tabelle.
- Seleziona la tabella che desideri aggiornare.
- Scegli Azione, quindi scegli Visualizza dettagli.
- Scegli Modifica schema.
- Individua la colonna con il tipo di dati array e scegli array.
- Per Tipo di colonna, seleziona stringa dall'elenco a discesa.
- Seleziona Aggiorna.
- Nella pagina Modifica schema, scegli Salva.
-oppure-
Esegui il comando SHOW CREATE TABLE per generare la query che ha creato la tabella. Individua la colonna con il tipo di dati array e modifica il tipo di dati in stringa.
Crea una nuova tabella
Crea una nuova tabella e scegli stringa per il tipo di dati della colonna.
"GENERIC_INTERNAL_ERROR: Value exceeds MAX_INT"
Potresti ricevere l'errore quando una cella in una colonna INT di origine ha un valore numerico maggiore di 2.147.483.647.
Per risolvere il problema, modifica la colonna con il tipo di dati int in bigint. Puoi utilizzare la console AWS Glue o eseguire un comando per modificare il tipo di dati della colonna. Oppure crea una nuova tabella.
Modifica il tipo di dati della colonna
Per utilizzare la console, completa i seguenti passaggi:
- Apri la console AWS Glue.
- Nel riquadro di navigazione, scegli Tabelle.
- Seleziona la tabella che desideri aggiornare.
- Scegli Azione, quindi scegli Visualizza dettagli.
- Scegli Modifica schema.
- Individua la colonna con il tipo di dati int e scegli **int **.
- Per Tipo di colonna, seleziona bigint dall'elenco a discesa.
- Seleziona Aggiorna.
- Nella pagina Modifica schema, scegli Salva.
-oppure-
Esegui il comando SHOW CREATE TABLE per generare la query che ha creato la tabella. Individua la colonna con il tipo di dati int e modifica il tipo di dati in bigint.
Crea una nuova tabella
Crea una nuova tabella e scegli bigint per il tipo di dati della colonna.
"GENERIC_INTERNAL_ERROR: Value exceeds MAX_BYTE"
Potresti ricevere l'errore quando una cella in una colonna TINYINT di origine ha un valore numerico non valido. Il valore minimo di una colonna TINYINT è -128, mentre il suo valore massimo è 127.
Per risolvere il problema, modifica la colonna con il tipo di dati tinyint in smallint, int o bigint. Puoi utilizzare la console AWS Glue o eseguire un comando per modificare il tipo di dati della colonna. Oppure crea una nuova tabella.
Modifica il tipo di dati della colonna
Per utilizzare la console, completa i seguenti passaggi:
- Apri la console AWS Glue.
- Nel riquadro di navigazione, scegli Tabelle.
- Seleziona la tabella che desideri aggiornare.
- Scegli Azione, quindi scegli Visualizza dettagli.
- Scegli Modifica schema.
- Individua la colonna con il tipo di dati tinyint e scegli tinyinit.
- Per Tipo di colonna, seleziona smallint, bigint o int dall'elenco a discesa.
- Seleziona Aggiorna.
- Nella pagina Modifica schema, scegli Salva.
-oppure-
Esegui il comando SHOW CREATE TABLE per generare la query che ha creato la tabella. Individua la colonna con il tipo di dati tinyint e modifica il tipo di dati in smallint, bigint o int.
Crea una nuova tabella
Crea una nuova tabella e scegli smallint, bigint o int per il tipo di dati della colonna.
"GENERIC_INTERNAL_ERROR: Number of partition values does not match number of filters"
Potresti ricevere l'errore quando hai partizioni non coerenti sui dati Amazon S3 per uno dei seguenti motivi:
- Hai modificato le partizioni S3. Ad esempio, hai aggiunto nuove partizioni.
- Il numero di colonne della partizione nella tabella non corrisponde al numero di colonne della partizione nei metadati della partizione.
Per risolvere il problema, puoi configurare un crawler AWS Glue per creare una nuova tabella. In alternativa, utilizza l'istruzione ALTER TABLE DROP PARTITION per eliminare le partizioni. Quindi utilizza l'istruzione ALTER TABLE ADD PARTITION per aggiungere lo stesso numero di partizioni della definizione della tabella.
Ad esempio, hai colonne della partizione denominate data e paese nella definizione della tabella, ma la partizione ha una sola colonna denominata data. Elimina la partizione con la colonna data e aggiungi le partizioni data e paese alla tabella.
Esempi di comando:
ALTER TABLE doc_example_table DROP PARTITION (date = '2014-05-14'); ALTER TABLE doc_example_table ADD PARTITION (date = '2016-05-14', country = 'IN');
"GENERIC_INTERNAL_ERROR: Multiple entries with same key"
Se hai colonne con lo stesso nome, devi elaborare prima i dati per includere una coppia chiave-valore valida. Per ignorare le colonne con lo stesso nome, imposta ignore.malformed.json come SERDEPROPERTIES in org.openx.data.jsonserde.JsonSerDe.
Apache Hive non supporta le colonne con distinzione tra maiuscole e minuscole. Ad esempio, potresti riscontrare un problema quando hai due colonne denominate Colonna e colonna.
Se i nomi delle colonne sono gli stessi ma in casi diversi, devi utilizzare la mappatura e configurare JSON SerDe in modo che non faccia distinzione tra maiuscole e minuscole.
Esempio di comando:
CREATE TABLE mytable ( time1 string, time2 string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( "case.insensitive" = "false", --tells hive to ignore key case "mapping.time1"= "time", -- lowercase 'time' mapped into 'time1' "mapping.time2"= "Time") -- uppercase to 'time2'
Informazioni correlate
- Argomenti
- Analytics
- Lingua
- Italiano
