Beheben von Problemen in Athena
Das Athena-Team hat die folgenden Informationen zur Fehlerbehebung von Kundenproblemen gesammelt. Obwohl sie nicht umfassend ist, enthält sie Ratschläge zu einigen häufigen Leistungs-, Timeout- und Speicherproblemen.
Themen
CREATE TABLE AS SELECT (CTAS)
Duplizierte Daten treten mit gleichzeitigen CTAS-Anweisungen auf
Athena führt keine gleichzeitige Validierung für CTAS durch. Stellen Sie sicher, dass für denselben Speicherort keine doppelte CTAS-Anweisung zur gleichen Zeit vorhanden ist. Selbst wenn eine CTAS- oder INSERT-INTO-Anweisung fehlschlägt, können verwaiste Daten an dem in der Anweisung angegebenen Datenspeicherort verbleiben.
HIVE_TOO_MANY_OPEN_PARTITIONS
Wenn Sie eine CTAS-Anweisung verwenden, um eine Tabelle mit mehr als 100 Partitionen zu erstellen, wird möglicherweise der Fehler HIVE_TOO_MANY_OPEN_PARTITIONS: Exceeded limit of 100 open writers for partitions/buckets angezeigt. Um diese Einschränkung zu umgehen, können Sie eine CTAS-Anweisung und eine Reihe von INSERT INTO-Anweisungen verwenden, die jeweils bis zu 100 Partitionen erstellen oder einfügen. Weitere Informationen finden Sie unter Verwenden von CTAS und INSERT INTO zum Umgehen des Limits von 100 Partitionen.
Probleme mit Datendateien
Athena kann versteckte Dateien nicht lesen
Athena behandelt Quelldateien, die mit einem Unterstrich (_) oder einem Punkt (.) beginnen, als ausgeblendet. Benennen Sie die Dateien um, um diese Einschränkung zu umgehen.
Athena liest Dateien, die ich vom AWS Glue-Crawler ausgeschlossen habe
Athena erkennt keine Ausschlussmuster, die Sie einem AWS Glue-Crawler angeben. Wenn Sie beispielsweise über einen Amazon-S3-Bucket verfügen, der sowohl .csv- als auch .json-Dateien enthält und Sie die .json-Dateien vom Crawler ausschließen, fragt Athena beide Dateigruppen ab. Um dies zu vermeiden, platzieren Sie die Dateien, die Sie ausschließen möchten, an einem anderen Speicherort.
HIVE_BAD_DATA: Fehler beim Analysieren des Feldwerts
Dieser Fehler kann in folgenden Szenarien auftreten:
-
Der in der Tabelle definierte Datentyp stimmt nicht mit den Quelldaten überein, oder ein einzelnes Feld enthält verschiedene Datentypen. Lösungsvorschläge finden Sie unter Meine Amazon-Athena-Abfrage schlägt mit dem Fehler „HIVE_BAD_DATA: Fehler beim Parsen des Feldwerts für das Feld X: Für Eingabezeichenfolge: „12312845691“ fehl“
im AWS-Wissenscenter. -
Nullwerte sind in einem ganzzahligen Feld vorhanden. Eine Problemumgehung besteht darin, die Spalte mit den Nullwerten als
stringzu erstellen und dann mitCASTdas Feld in einer Abfrage zu konvertieren, wobei der Standardwert0für Nullwerte bereitgestellt wird. Weitere Informationen finden Sie unter Wenn ich CSV-Daten in Athena abfrage, erhalte ich den Fehler „HIVE_BAD_DATA: Fehler beim Parsen des Feldwerts '' für Feld X: Für Eingabezeichenfolge: ""“im AWS-Wissenscenter.
HIVE_CANNOT_OPEN_SPLIT: Fehler beim Öffnen von Hive split s3://amzn-s3-demo-bucket
Dieser Fehler kann auftreten, wenn Sie ein Amazon-S3-Bucket-Präfix abfragen, das eine große Anzahl von Objekten aufweist. Weitere Informationen finden Sie unter Wie behebe ich den Fehler „HIVE_CANNOT_OPEN_SPLIT: Fehler beim Öffnen von Hive split s3://amzn-s3-demo-bucket/: Langsam“ in Athena?
HIVE_CURSOR_ERROR: com.amazonaws.services.s3.model.Amazons3Exception: Der angegebene Schlüssel ist nicht vorhanden
Dieser Fehler tritt normalerweise auf, wenn eine Datei entfernt wird, wenn eine Abfrage ausgeführt wird. Führen Sie entweder die Abfrage erneut aus, oder überprüfen Sie Ihren Workflow, um festzustellen, ob ein anderer Auftrag oder Prozess die Dateien ändert, wenn die Abfrage ausgeführt wird.
HIVE_CURSOR_ERROR: Unerwartetes Ende des Eingabedatenstreams
Diese Meldung zeigt an, dass die Datei beschädigt oder leer ist. Überprüfen Sie die Integrität der Datei und führen Sie die Abfrage erneut aus.
HIVE_FILESYSTEM_ERROR: Falsche FileSize 1234567 für Datei
Diese Meldung kann auftreten, wenn sich eine Datei zwischen Abfrageplanung und Abfrageausführung geändert hat. Es tritt normalerweise auf, wenn eine Datei auf Amazon S3 direkt ersetzt wird (z. B. wird ein PUT für einen Schlüssel ausgeführt, in dem bereits ein Objekt existiert). Athena unterstützt das Löschen oder Ersetzen des Inhalts einer Datei nicht, wenn eine Abfrage ausgeführt wird. Um diesen Fehler zu vermeiden, planen Sie Aufträge, die Dateien zu Zeiten überschreiben oder löschen, in denen Abfragen nicht ausgeführt werden, oder schreiben Sie nur Daten in neue Dateien oder Partitionen.
HIVE_UNKNOWN_ERROR: Eingabeformat kann nicht erstellt werden
Dieser Fehler kann auf Probleme wie die folgenden zurückzuführen sein:
-
Der AWS Glue-Crawler konnte das Datenformat nicht klassifizieren
-
Bestimmte AWS Glue-Tabellendefinitionseigenschaften sind leer
-
Athena unterstützt das Datenformat der Dateien in Amazon S3 nicht
Weitere Informationen finden Sie unter Wie behebe ich den Fehler „Eingabeformat kann nicht erstellt werden“ in Athena?
Der zum Speichern der Abfrageergebnisse bereitgestellte S3-Speicherort ist ungültig.
Stellen Sie sicher, dass Sie einen gültigen S3-Speicherort für Ihre Abfrageergebnisse angegeben haben. Weitere Informationen finden Sie unter Angeben eines Speicherorts des Abfrageergebnisses im Thema Arbeiten mit Abfrageergebnissen und aktuellen Abfragen.
Delta-Lake-Tabellen von Linux Foundation
Das Delta-Lake-Tabellenschema ist nicht synchron
Wenn Sie eine Delta-Lake-Tabelle abfragen, die ein veraltetes Schema in AWS Glue enthält, kann die folgende Fehlermeldung angezeigt werden:
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.
Das Schema kann veraltet sein, wenn es nach dem Hinzufügen zu Athena in AWS Glue geändert wird. Führen Sie einen der folgenden Schritte aus, um das Schema zu aktualisieren:
-
Führen Sie in AWS Glue den AWS Glue-Crawler aus.
-
Löschen Sie in Athena die Tabelle und erstellen Sie sie erneut.
-
Fügen Sie fehlende Spalten manuell hinzu, indem Sie entweder die ALTER TABLE ADD COLUMNS-Anweisung in Athena verwenden oder das Tabellenschema in AWS Glue bearbeiten.
Verbundabfragen
Timeout beim Aufrufen von ListTableMetadata
Ein Aufruf der API ListTableMetadata kann zu einem Timeout führen, wenn die Datenquelle viele Tabellen enthält, wenn die Datenquelle langsam ist oder wenn das Netzwerk langsam ist. Sie lösen dieses Problem, indem Sie die folgenden Schritte ausführen.
-
Anzahl der Tabellen überprüfen – Wenn Sie mehr als 1 000 Tabellen haben, versuchen Sie, die Anzahl der Tabellen zu reduzieren. Für eine möglichst schnelle
ListTableMetadata-Antwort empfehlen wir, weniger als 1 000 Tabellen pro Katalog zu haben. -
Überprüfen Sie die Lambda-Konfiguration – Die Überwachung des Verhaltens der Lambda-Funktion ist von entscheidender Bedeutung. Wenn Sie Verbundkataloge verwenden, sollten Sie unbedingt die Ausführungsprotokolle der Lambda-Funktion überprüfen. Passen Sie auf der Grundlage der Ergebnisse die Arbeitsspeicher- und Timeout-Werte entsprechend an. Um mögliche Probleme mit Timeouts zu identifizieren, überprüfen Sie Ihre Lambda-Konfiguration erneut. Weitere Informationen finden Sie unter Konfigurieren von Funktions-Timeout (Konsole) im AWS Lambda-Entwicklerhandbuch.
-
Überprüfen Sie die Protokolle der Verbunddatenquellen – Untersuchen Sie die Protokolle und Fehlermeldungen der verbundenen Datenquelle, um festzustellen, ob Probleme oder Fehler vorliegen. Die Protokolle können wertvolle Einblicke in die Ursache des Timeouts liefern.
-
StartQueryExecutionzum Abrufen von Metadaten verwenden – Wenn Sie über mehr als 1 000 Tabellen verfügen, kann es länger als erwartet dauern, Metadaten über Ihren Verbundkonnektor abzurufen. Da die asynchrone Natur von StartQueryExecution sicherstellt, dass Athena die Abfrage optimal ausführt, sollten Sie die Verwendung vonStartQueryExecutionals Alternative zuListTableMetadatain Betracht ziehen. Die folgenden AWS CLI-Beispiele zeigen, wieStartQueryExecutionanstelle vonListTableMetadatazum Abrufen aller Metadaten von Tabellen in Ihrem Datenkatalog verwendet werden kann.Führen Sie zunächst eine Abfrage aus, die alle Tabellen abruft, wie im folgenden Beispiel.
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"Als Nächstes rufen Sie die Metadaten einer einzelnen Tabelle ab, wie im folgenden Beispiel.
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"Wie lange es dauert, bis die Ergebnisse abgerufen werden, hängt von der Anzahl der Tabellen in Ihrem Katalog ab.
Informationen zur Fehlerbehebung bei Verbundabfragen finden Sie unter Verbreitete Probleme
JSON-bezogene Fehler
NULL oder falsche Datenfehler beim Versuch, JSON-Daten zu lesen
NULL oder falsche Datenfehler, wenn Sie versuchen, JSON-Daten zu lesen, können auf eine Reihe von Ursachen zurückzuführen sein. Um Zeilen zu identifizieren, die Fehler verursachen, wenn Sie OpenX SerDe verwenden, setzen Sie ignore.malformed.json auf true. Fehlgeformte Datensätze werden als NULL zurückgegeben. Weitere Informationen finden Sie unter Ich erhalte Fehler, wenn ich versuche, JSON-Daten in Amazon Athena
HIVE_BAD_DATA: Fehler beim Parsen des Feldwerts für Feld 0: java.lang.String kann nicht in org.openx.data.jsonserde.json.JSONObject umgewandelt werden
Das OpenX JSON SerDe löst diesen Fehler aus, wenn eine Spalte in einer Athena-Abfrage nicht analysiert werden kann. Dies kann passieren, wenn Sie eine Spalte als map oder struct definieren, die zugrunde liegenden Daten jedoch tatsächlich ein string, int oder ein anderer primitiver Typ sind.
HIVE_CURSOR_ERROR: Zeile ist kein gültiges JSON-Objekt - JSONException: Doppelter Schlüssel
Dieser Fehler tritt auf, wenn Sie Athena verwenden, um AWS Config-Ressourcen abzufragen, die mehrere Tags mit demselben Namen in unterschiedlichen Fällen aufweisen. Die Lösung besteht darin, CREATE
TABLE mit WITH SERDEPROPERTIES 'case.insensitive'='false' auszuführen und die Namen zuzuordnen. Weitere Informationen zu case.insensitive und Mapping finden Sie unter JSON-SerDe-Bibliotheken. Weitere Informationen finden Sie unter Wie behebe ich „HIVE_CURSOR_ERROR: Zeile ist kein gültiges JSON-Objekt - JSONException: Duplizierter Schlüssel“ beim Lesen von Dateien aus AWS Config in Athena?
HIVE_CURSOR_ERROR Nachrichten mit hübsch gedrucktem JSON
Die Hive JSON SerDe- und OpenX JSON SerDe-Bibliotheken erwarten, dass sich jedes JSON-Dokument auf einer einzigen Textzeile befindet, ohne Zeilenabschlusszeichen, die die Felder im Datensatz trennen. Wenn der JSON-Text im hübschen Druckformat vorliegt, erhalten Sie möglicherweise eine Fehlermeldung wie HIVE_CURSOR_ERROR: Zeile ist kein gültiges JSON-Objekt oder HIVE_CURSOR_ERROR: JsonParseException: Unerwartetes Ende der Eingabe: Erwartete Schließmarkierung für OBJEKT, wenn Sie versuchen, die Tabelle abzufragen, nachdem Sie dies erstellt haben. Weitere Informationen finden Sie unter JSON-Datendatei
Mehrere JSON-Datensätze geben einen SELECT COUNT von 1 zurück
Wenn Sie das OpenX JSON SerDe verwenden, stellen Sie sicher, dass die Datensätze durch ein Zeilenumbruchzeichen getrennt sind. Weitere Informationen finden Sie unter Die SELECT-COUNT-Abfrage in Amazon Athena gibt nur einen Datensatz zurück, obwohl die Eingabe-JSON-Datei mehrere Datensätze enthält
Eine Tabelle, die von einem AWS Glue-Crawler erstellt wurde, der einen benutzerdefinierten JSON-Klassifikator verwendet, kann nicht abgefragt werden
Die Athena-Engine unterstützt keine benutzerdefinierten JSON-Klassifikatoren. Um dieses Problem zu umgehen, erstellen Sie eine neue Tabelle ohne den benutzerdefinierten Klassifikator. Um den JSON zu transformieren, können Sie CTAS verwenden oder eine Ansicht erstellen. Wenn Sie beispielsweise mit Arrays arbeiten, können Sie die Option UNNEST verwenden, um den JSON zu reduzieren. Eine andere Möglichkeit besteht darin, einen AWS Glue-ETL-Auftrag zu verwenden, der den benutzerdefinierten Klassifikator unterstützt, die Daten in Amazon S3 in Parquet zu konvertieren und sie dann in Athena abzufragen.
MSCK REPAIR TABLE
Informationen zu Problemen im Zusammenhang mit MSCK REPAIR TABLE finden Sie in den Abschnitten Überlegungen und Einschränkungen und Fehlerbehebung der Seite MSCK REPAIR TABLE.
Probleme mit der Ausgabe
Ausgabe-Bucket konnte nicht verifiziert/erstellt werden
Dieser Fehler kann auftreten, wenn der angegebene Abfrageergebnisspeicherort nicht vorhanden ist oder wenn die richtigen Berechtigungen nicht vorhanden sind. Weitere Informationen finden Sie unter Wie behebe ich den Fehler „Ausgabe-Bucket kann nicht überprüft/erstellt werden“ in Amazon Athena?
TIMESTAMP-Ergebnis ist leer
Athena benötigt das Java–TIMESTAMP-Format. Weitere Informationen finden Sie unter Wenn ich eine Tabelle in Amazon Athena abfrage, ist das TIMESTAMP-Ergebnis leer
Speichern der Athena Abfrageausgabe in einem anderen Format als CSV
Standardmäßig gibt Athena Dateien nur im CSV-Format aus. Um die Ergebnisse einer SELECT-Abfrage in einem anderen Format auszugeben, können Sie die UNLOAD-Anweisung verwenden. Weitere Informationen finden Sie unter UNLOAD. Sie können auch eine CTAS-Abfrage verwenden, die die format Tabelleneigenschaft verwendet, um das Ausgabeformat zu konfigurieren. Im Gegensatz zu UNLOAD erfordert die CTAS-Technik die Erstellung einer Tabelle. Weitere Informationen finden Sie unter Wie kann ich eine Athena-Abfrageausgabe in einem anderen Format als CSV speichern, z. B. einem komprimierten Format?
Der zum Speichern der Abfrageergebnisse bereitgestellte S3-Speicherort ist ungültig
Sie können diese Fehlermeldung erhalten, wenn sich Ihr Ausgabe-Bucket-Speicherort nicht in derselben Region befindet wie die Region, in der Sie Ihre Abfrage ausführen. Um dies zu vermeiden, geben Sie einen Abfrageergebnisspeicherort in der Region an, in der Sie die Abfrage ausführen. Informationen zu den erforderlichen Schritten finden Sie unter Angeben eines Speicherorts des Abfrageergebnisses.
Probleme mit Parquet
org.apache.parquet.io.groupColumnio kann nicht in org.apache.parquet.io.primitiveColumnio umgewandelt werden
Dieser Fehler wird durch eine Nichtübereinstimmung des Parquet-Schemas verursacht. Eine Spalte mit einem nicht-primitiven Typ (z. B. array) wurde in AWS Glue als primitiver Typ (z. B. string) deklariert. Um dieses Problem zu beheben, überprüfen Sie das Datenschema in den Dateien und vergleichen Sie es mit dem in deklarierten Schema AWS Glue.
Probleme mit Statistiken in Parquet
Wenn Sie Parquet-Daten lesen, erhalten Sie möglicherweise Fehlermeldungen wie die folgenden:
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.
Um dieses Problem zu umgehen, verwenden Sie die CREATE TABLE- oder ALTER TABLE SET
TBLPROPERTIES-Anweisung, um die Parquet-SerDe-Eigenschaft parquet.ignore.statistics auf true zu setzen, wie in den folgenden Beispielen.
Beispiel für CREATE TABLE
... ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' WITH SERDEPROPERTIES ('parquet.ignore.statistics'='true') STORED AS PARQUET ...
Beispiel für ALTER TABLE
ALTER TABLE ... SET TBLPROPERTIES ('parquet.ignore.statistics'='true')
Weitere Informationen über Parquet Hive SerDe finden Sie unter Parquet SerDe.
Partitionierungsprobleme
MSCK REPAIR TABLE entfernt keine veralteten Partitionen
Wenn Sie eine Partition manuell in Amazon S3 löschen und dann MSCK REPAIR TABLE ausführen, erhalten Sie möglicherweise die Fehlermeldung Partitions missing from filesystem (Partitionen fehlen im Dateisystem). Dies tritt auf, weil MSCK REPAIR TABLE nicht veraltete Partitionen aus Tabellenmetadaten entfernt. Verwenden Sie ALTER TABLE DROP
PARTITION, um die veralteten Partitionen manuell zu entfernen. Weitere Informationen finden Sie im Abschnitt „Fehlerbehebung“ des MSCK REPAIR TABLE-Themas.
Fehler MSCK REPAIR TABLE
Wenn einer bestimmten Tabelle eine große Anzahl von Partitionen (z. B. mehr als 100.000) zugeordnet ist, kann MSCK REPAIR TABLE aufgrund von Speicherbeschränkungen fehlschlagen. Verwenden Sie stattdessen ALTER TABLE ADD PARTITION, um dieses Limit zu umgehen.
MSCK REPAIR TABLE erkennt Partitionen, fügt sie jedoch nicht zu hinzu AWS Glue
Dieses Problem kann auftreten, wenn ein Amazon-S3-Pfad in Camel statt in Kleinbuchstaben angegeben ist oder eine IAM-Richtlinie die Aktion glue:BatchCreatePartition nicht zulässt. Weitere Informationen finden Sie unter MSCK REPAIR TABLE erkennt Partitionen in Athena, fügt sie jedoch nicht zum AWS Glue Data Catalog hinzu
Partitionsprojektionsbereiche mit dem Datumsformat TT-MM-JJJ-HH-MM-SS oder JJJJ-MM-TT funktionieren nicht
Um korrekt zu funktionieren, muss das Datumsformat auf eingestellt sein yyyy-MM-dd
HH:00:00. Weitere Informationen finden Sie im Stack-Überlauf-Beitrag Athena-Partitionsprojektion funktioniert nicht wie erwartet
PARTITION BY unterstützt den BIGINT-Typ nicht
Konvertieren Sie den Datentyp in stringund versuchen Sie es erneut.
Keine aussagekräftigen Partitionen verfügbar
Diese Fehlermeldung bedeutet in der Regel, dass die Partitionseinstellungen beschädigt wurden. Um dieses Problem zu beheben, löschen Sie die Tabelle und erstellen Sie eine Tabelle mit neuen Partitionen.
Partitionsprojektion funktioniert nicht in Verbindung mit Bereichspartitionen
ÜStellen Sie sicher, dass die Zeitbereichseinheitprojection.<columnName>.interval.unit mit dem Trennzeichen für die Partitionen übereinstimmt. Wenn Partitionen beispielsweise durch Tage getrennt sind, funktioniert eine Bereichseinheit von Stunden nicht.
Fehler bei der Partitionsprojektion, wenn der Bereich mit einem Bindestrich angegeben wird
Die Angabe der range-Tabelleneigenschaft mit einem Bindestrich anstelle eines Kommas erzeugt einen Fehler wie INVALID_TABLE_PROPERTY: Für die Eingabezeichenfolge: „. Beachten Sie, dass die Werte durch Kommata voneinander getrennt werden müssen, nicht durch einen Bindestrich. Weitere Informationen finden Sie unter Ganzzahl-Typ.Zahl - Zahl“
HIVE_UNKNOWN_ERROR: Eingabeformat kann nicht erstellt werden
Eine oder mehrere der Glue-Partitionen werden in einem anderen Format deklariert, da jede Glue-Partition unabhängig über ihr eigenes spezifisches Eingabeformat verfügt. Bitte überprüfen Sie, wie Ihre Partitionen in definiert sind AWS Glue.
HIVE_PARTITION_SCHEMA_MISMATCH
Unterscheidet sich das Schema einer Partition vom Schema der Tabelle, kann eine Abfrage mit der Fehlermeldung HIVE_PARTITION_SCHEMA_MISMATCH fehlschlagen.
Das Schema wird für jede Tabelle innerhalb des AWS Glue-Datenkatalogs mit Partitionsspalten auf Tabellenebene und für jede individuelle Partition innerhalb der Tabelle gespeichert. Das Schema für Partitionen wird von einem AWS Glue-Crawler basierend auf der Datenstichprobe ausgefüllt, die innerhalb der Partition ausgelesen wird.
Wenn Athena eine Abfrage ausführt, werden das Schema der Tabelle und das Schema der für die Abfrage erforderlichen Partitionen geprüft. Dabei werden die Spaltendatentypen der Reihe nach verglichen und es wird sichergestellt, dass sie für überlappende Spalten übereinstimmen. So wird verhindert, dass es zu unerwartetem Hinzufügen oder Entfernen von Spalten in der Mitte der Tabelle kommt. Wenn Athena erkennt, dass das Schema einer Partition vom Schema der Tabelle abweicht, kann Athena die Abfrage nicht verarbeiten und bricht mit dem Fehler ab HIVE_PARTITION_SCHEMA_MISMATCH.
Es gibt mehrere Möglichkeiten, dieses Problem zu beheben. Wenn die Daten versehentlich hinzugefügt wurden, können Sie die Datendateien, die zu der Schemaabweichung geführt haben, entfernen, die Partition verwerfen und die Daten erneut durchsuchen. Sie können auch die einzelne Partition verwerfen und dann mit Athena MSCK REPAIR ausführen, um die Partition mit dem Schema der Tabelle neu zu erstellen. Diese zweite Option funktioniert jedoch nur, wenn Sie sicher sind, dass das angewendete Schema die Daten weiterhin korrekt ausliest.
SemanticException-Tabelle ist nicht partitioniert, aber die Partitionsspezifikation existiert
Dieser Fehler kann auftreten, wenn in der CREATE
TABLE-Anweisung keine Partitionen definiert wurden. Weitere Informationen finden Sie unter Wie kann ich den Fehler „FEHLGESCHLAGEN: SemanticException-Tabelle ist nicht partitioniert, aber Partitionsspezifikation existiert“ in Athena beheben?
Null Byte _$folder$-Datei
Wenn du eine ALTER TABLE ADD PARTITION-Anweisung ausführst und fälschlicherweise eine Partition angibts, die bereits vorhanden ist, und einen falschen Ort für Simple Storage Service (Amazon S3), Null-Byte-Platzhalterdateien des Formats werden in Simple Storage Service (Amazon S3) erstellt. Sie müssen diese Dateien manuell entfernen.partition_value_$folder$
Um dies zu verhindern, verwenden Sie die ADD IF NOT EXISTS-Syntax in Ihrer ALTER TABLE ADD PARTITION-Aussage, wie folgt:
ALTER TABLE table_name ADD IF NOT EXISTS PARTITIION […]
Aus partitionierten Daten zurückgegebene Datensätze
Dieses Problem kann aus einer Vielzahl von Gründen auftreten. Mögliche Ursachen und Lösungen finden Sie unter Ich habe eine Tabelle in Amazon Athena mit definierten Partitionen erstellt, aber wenn ich die Tabelle abfrage, werden null Datensätze zurückgegeben
Siehe auch HIVE_TOO_MANY_OPEN_PARTITIONS.
Berechtigungen
Zugriffsverweigerter Fehler beim Abfragen von Amazon S3
Dies kann auftreten, wenn Sie nicht über die Berechtigung zum Lesen der Daten im Bucket oder zum Schreiben in den Ergebnis-Bucket verfügen oder der Amazon-S3-Pfad einen Regionsendpunkt wie enthält us-east-1.amazonaws.com. Weitere Informationen finden Sie unter Wenn ich eine Athena-Abfrage ausführe, erhalte ich die Fehlermeldung „Zugriff verweigert“
Zugriff verweigert mit Statuscode: 403 Fehler beim Ausführen von DDL-Abfragen für verschlüsselte Daten in Amazon S3
Wenn Sie möglicherweise die Fehlermeldung Zugriff verweigert (Service: Amazon S3; Statuscode: 403; Fehlercode: AccessDenied; Anforderungs-ID: erhalten, wenn die folgenden Bedingungen zutreffen:<request_id>)
-
Sie führen eine DDL-Abfrage wie
ALTER TABLE ADD PARTITIONoderMSCK REPAIR TABLEaus. -
Sie haben einen Bucket, dessen Standardverschlüsselung für die Verwendung von
SSE-S3konfiguriert ist. -
Der Bucket verfügt auch über eine Bucket-Richtlinie wie die folgende, die
PutObject-Anforderungen erzwingt, diePUT-Header"s3:x-amz-server-side-encryption": "true"und"s3:x-amz-server-side-encryption": "AES256"anzugeben.
In einem solchen Fall besteht die empfohlene Lösung darin, die Bucket-Richtlinie wie die oben genannte zu entfernen, da die Standardverschlüsselung des Buckets bereits vorhanden ist.
Zugriff verweigert mit Statuscode: 403 beim Abfragen eines Amazon-S3-Buckets in einem anderen Konto
Dieser Fehler kann auftreten, wenn Sie versuchen, Protokolle abzufragen, die von einem anderen AWS-Service geschrieben wurden und das zweite Konto der Bucket-Eigentümer ist, aber nicht der Eigentümer der Objekte im Bucket. Weitere Informationen finden Sie unter Ich erhalte die Amazon-S3-Ausnahme „Zugriff verweigert mit Statuscode: 403“ in Amazon Athena, wenn ich einen Bucket in einem anderen Konto abfrage
IAM-Rollenanmeldeinformationen zum Herstellen einer Verbindung mit dem Athena-JDBC-Treiber
Sie können die temporären Anmeldeinformationen einer Rolle abrufen, um die JDBC-Verbindung zu Athena zu authentifizieren. Temporäre Anmeldeinformationen haben eine maximale Lebensdauer von 12 Stunden. Weitere Informationen finden Sie unter Wie kann ich meine IAM-Rollenanmeldeinformationen verwenden oder zu einer anderen IAM-Rolle wechseln, wenn ich über den JDBC-Treiber eine Verbindung zu Athena herstelle?
Der erforderliche Tabellenspeicherdeskriptor ist nicht ausgefüllt
Dies kann auftreten, wenn Sie versuchen, eine Tabelle abzufragen oder anzuzeigen, für die Sie keine Berechtigungen haben. Zu diesem Zweck besteht die empfohlene Lösung darin, DESCRIBE und SELECT Berechtigungen für die Ressourcen über AWS Lake Formation zu erteilen. Wenn Ihre Ressource von mehreren Konten gemeinsam genutzt wird, wobei die ursprüngliche Ressource in Konto A vorhanden ist und Sie eine verknüpfte Ressource in Konto B abfragen möchten, müssen Sie sicherstellen, dass Ihre Rolle über DESCRIBE-Berechtigungen für die ursprüngliche Ressource in Konto A und über SELECT-Berechtigungen für die verknüpfte Ressource in Konto B verfügt.
Probleme mit der Abfragesyntax
Fehlgeschlagen: NullPointerException-Name ist Null
Wenn Sie den API-Vorgang AWS Glue CreateTable oder die Vorlage CloudFormation AWS::Glue::Table verwenden, um eine Tabelle zur Verwendung in Athena zu erstellen, ohne die TableType-Eigenschaft anzugeben und dann eine DDL-Abfrage wie SHOW CREATE TABLE oder MSCK REPAIR TABLE ausführen, können Sie die Fehlermeldung FEHLGESCHLAGEN: NullPointerException-Name is null anzeigen.
Um den Fehler zu beheben, geben Sie einen Wert für das TableInput TableType-Attribut als Teil des AWS Glue-API-Aufrufs CreateTable oder der z-CloudFormation Vorlage an. Mögliche Werte für TableType sind EXTERNAL_TABLE oder VIRTUAL_VIEW.
Diese Anforderung gilt nur, wenn Sie eine Tabelle mit dem AWS Glue-API-Vorgang CreateTable oder der AWS::Glue::Table-Vorlage erstellen. Wenn Sie eine Tabelle für Athena mithilfe einer DDL-Anweisung oder eines AWS Glue-Crawlers erstellen, wird die TableType-Eigenschaft automatisch für Sie definiert.
Funktion nicht registriert
Dieser Fehler tritt auf, wenn Sie versuchen, eine Funktion zu verwenden, die Athena nicht unterstützt. Eine Liste der von Athena unterstützten Funktionen finden Sie unter Funktionen in Amazon Athena oder führen Sie die SHOW FUNCTIONS-Anweisung im Abfrage-Editor aus. Sie können auch Ihre eigene benutzerdefinierte Funktion (UDF) schreiben. Weitere Informationen finden Sie unter Wie behebe ich den Syntaxfehler „Funktion nicht registriert“ in Athena?
GENERIC_INTERNAL_ERROR Ausnahmen
GENERIC_INTERNAL_ERROR-Ausnahmen können verschiedene Ursachen haben, z. B. die folgenden:
-
GENERIC_INTERNAL_ERROR: null – Sie können diese Ausnahme unter den folgenden Bedingungen sehen:
-
Sie haben eine Schema-Nichtübereinstimmung zwischen dem Datentyp einer Spalte in der Tabellendefinition und dem tatsächlichen Datentyp des Datensatzes.
-
So leiten Sie eine
CREATE TABLE AS SELECT(CTAS)-Abfrage mit ungenauer Syntax ein.
-
-
GENERIC_INTERNAL_ERROR: übergeordneter Builder ist null – Diese Ausnahme wird möglicherweise angezeigt, wenn Sie eine Tabelle mit Spalten vom Datentyp
arrayabfragen und Sie die OpenCSVSerDe-Bibliothek verwenden. Das OpenCSVSerde-Format unterstützt denarray-Datentyp nicht. -
GENERIC_INTERNAL_ERROR: Wert überschreitet MAX_INT – Diese Ausnahme wird möglicherweise angezeigt, wenn die Quelldatenspalte mit dem Datentyp
INTdefiniert ist und einen numerischen Wert größer als 2.147.483.647 hat. -
GENERIC_INTERNAL_ERROR: Wert überschreitet MAX_BYTE – Diese Ausnahme wird möglicherweise angezeigt, wenn die Quelldatenspalte einen numerischen Wert aufweist, der die zulässige Größe für den Datentyp
BYTEüberschreitet. Der DatentypBYTEist gleichTINYINT.TINYINTist eine 8-Bit-Vorzeichen-Ganzzahl im Zweierkomplement-Format mit einem Mindestwert von -128 und einem Höchstwert von 127. -
GENERIC_INTERNAL_ERROR: Die Anzahl der Partitionswerte stimmt nicht mit der Anzahl der Filter überein – Diese Ausnahme wird möglicherweise angezeigt, wenn Sie inkonsistente Partitionen für Amazon Simple Storage Service (Amazon S3)-Daten haben. Unter den folgenden Bedingungen haben Sie möglicherweise inkonsistente Partitionen:
-
Partitionen auf Amazon S3 haben sich geändert (Beispiel: Neue Partitionen wurden hinzugefügt).
-
Die Anzahl der Partitionsspalten in der Tabelle stimmt nicht mit denen in den Partitionsmetadaten überein.
-
Weitere Informationen zu den einzelnen Fehlern finden Sie unter Wie behebe ich den Fehler „GENERIC_INTERNAL_ERROR“, wenn ich eine Tabelle in Amazon Athena abfrage?
Anzahl übereinstimmender Gruppen stimmt nicht mit der Anzahl der Spalten überein
Dieser Fehler tritt auf, wenn Sie das Regex SerDe in einer CREATE-TABLE-Anweisung verwenden und die Anzahl der Regex-Übereinstimmungsgruppen nicht mit der Anzahl der Spalten übereinstimmt, die Sie für die Tabelle angegeben haben. Weitere Informationen finden Sie unter Wie behebe ich den RegexSerDe-Fehler „Anzahl übereinstimmender Gruppen stimmt nicht mit der Anzahl der Spalten überein“ in Amazon Athena?
queryString konnte Einschränkung nicht erfüllen: Mitglied muss eine Länge von höchstens 262144 haben
Die maximale Länge der Abfragezeichenfolge in Athena (262.144 Byte) ist kein einstellbares Kontingent. AWS -Support kann das Kontingent für Sie nicht erhöhen, aber Sie können das Problem umgehen, indem Sie lange Abfragen in kleinere aufteilen. Weitere Informationen finden Sie unter Wie kann ich die maximale Abfragezeichenfolgenlänge in Athena erhöhen?
SYNTAX_ERROR: Spalte kann nicht gelöst werden
Dieser Fehler kann auftreten, wenn Sie eine Tabelle abfragen, die von einem AWS Glue-Crawler aus einer UTF-8-codierten CSV-Datei mit einer Bytereihenfolgemarkierung (BOM) erstellt wurde. AWS Glue erkennt die Stücklisten nicht und ändert sie in Fragezeichen, die Amazon Athena nicht erkennt. Die Lösung besteht darin, das Fragezeichen in Athena oder in zu entfernen AWS Glue.
Zu viele Argumente für den Funktionsaufruf
In Athena-Engine-Version 3 können Funktionen nicht mehr als 127 Argumente akzeptieren. Diese Einschränkung ist konstruktionsbedingt. Wenn Sie eine Funktion mit mehr als 127 Parametern verwenden, wird eine Fehlermeldung wie die folgende angezeigt:
TOO_MANY_ARGUMENTS: Zeile .nnn: nn: Zu viele Argumente für den Funktionsaufruf function_name()
Sie lösen dieses Problem, indem Sie weniger Parameter pro Funktionsaufruf verwenden.
Probleme mit dem Abfrage-Timeout
Wenn bei Ihren Athena-Abfragen Timeout-Fehler auftreten, überprüfen Sie Ihre CloudTrail-Protokolle. Bei Abfragen kann es aufgrund der Drosselung von AWS Glue oder Lake Formation APIs zu Timeouts kommen. Wenn diese Fehler auftreten, können die entsprechenden Fehlermeldungen eher auf ein Problem mit dem Abfrage-Timeout als auf ein Drosselungsproblem hinweisen. Um das Problem zu beheben, können Sie Ihre CloudTrail-Protokolle überprüfen, bevor Sie Kontakt mit Support aufnehmen. Weitere Informationen finden Sie unter AWS CloudTrail-Protokolle abfragen und Amazon-Athena-API-Aufrufen mit AWS CloudTrail protokollieren.
Informationen zu Problemen mit dem Abfrage-Timeout bei Verbundabfragen beim Aufrufen der ListTableMetadata-API finden Sie unter Timeout beim Aufrufen von ListTableMetadata.
Probleme mit Drosselung
Wenn Ihre Abfragen die Grenzen abhängiger Services wie Amazon S3, AWS KMS, AWS Glue, oder AWS Lambda überschreiten, sind die folgenden Meldungen zu erwarten. Um diese Probleme zu beheben, reduzieren Sie die Anzahl der gleichzeitigen Anrufe, die von demselben Konto stammen.
| Service | Fehlermeldung |
|---|---|
| AWS Glue | AWSGlueException: Rate überschritten. |
| AWS KMS | Sie haben die Rate überschritten, mit der Sie KMS aufrufen können. Verringern Sie die Häufigkeit Ihrer Aufrufe. |
| AWS Lambda |
|
| Amazon S3 | Amazons3Exception: Bitte reduzieren Sie Ihre Anfragequote. |
Informationen darüber, wie Sie die Drosselung von Amazon S3 bei der Verwendung von Athena verhindern können, finden Sie unter Drosselung durch Amazon S3 verhindern.
Ansichten
Ansichten, die in der Apache-Hive-Shell erstellt wurden, funktionieren in Athena nicht
Aufgrund ihrer grundlegend unterschiedlichen Implementierungen sind Ansichten, die in der Apache-Hive-Shell erstellt wurden, nicht mit Athena kompatibel. Um dieses Problem zu beheben, erstellen Sie die Ansichten in Athena erneut.
Ansicht ist veraltet; sie muss neu erstellt werden
Sie können diesen Fehler erhalten, wenn die Tabelle, die einer Ansicht zugrunde liegt, geändert oder gelöscht wurde. Die Auflösung besteht darin, die Ansicht neu zu erstellen. Weitere Informationen finden Sie unter Wie kann ich den Fehler „Ansicht ist veraltet; sie muss neu erstellt werden“ in Athena beheben?
Arbeitsgruppen
Informationen zum Beheben von Problemen mit Arbeitsgruppen finden Sie unter Fehler in Arbeitsgruppen beheben.
Weitere Ressourcen
Auf den folgenden Seiten finden Sie zusätzliche Informationen zur Behebung von Problemen mit Amazon Athena.
Folgende AWS-Ressourcen können auch hilfreich sein:
Die Fehlerbehebung erfordert oft eine iterative Abfrage und Erkennung durch einen Experten oder eine Community von Helfern. Wenn Sie nach dem Ausprobieren der Vorschläge auf dieser Seite weiterhin Probleme haben, wenden Sie sich an AWS -Support (in der AWS-Managementkonsole klicken Sie auf Support, Support Center) oder stellen Sie eine Frage zu AWS re:Post