Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Probleme in Athena beheben
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
- CREATETABLEALS SELECT () CTAS
- Probleme mit Datendateien
- Delta-Lake-Tabellen von Linux Foundation
- Verbundabfragen
- JSONverwandte Fehler
- MSCK REPAIR TABLE
- Probleme mit der Ausgabe
- Probleme mit Parquet
- Partitionierungsprobleme
- Berechtigungen
- Probleme mit der Abfragesyntax
- Probleme mit dem Abfrage-Timeout
- Probleme mit Drosselung
- Ansichten
- Arbeitsgruppen
- Weitere Ressourcen
- Athena-Fehlerkatalog
CREATETABLEALS SELECT () CTAS
Doppelte Daten treten bei gleichzeitigen CTAS Anweisungen auf
Athena führt keine gleichzeitige Validierung für durch. CTAS Stellen Sie sicher, dass es keine doppelten CTAS Kontoauszüge für denselben Standort zur gleichen Zeit gibt. Selbst wenn eine CTAS INSERT INTO Oder-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, erhalten Sie möglicherweise den Fehler HIVE_ _ _ TOO MANY OPEN _PARTITIONS: Das Limit von 100 offenen Writern für Partitionen/Buckets wurde überschritten
. 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 Sie CTAS und INSERTINTO, um das Limit von 100 Partitionen zu umgehen.
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 Crawler ausgeschlossen habe AWS Glue
Athena erkennt keine Ausschlussmuster, die Sie für einen 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 im Knowledge Center unter Meine Amazon Athena Athena-Abfrage schlägt fehl mit dem Fehler "HIVEBAD_ _DATA: Fehler beim Parsen des Feldwerts für Feld x: Für die Eingabezeichenfolge: „12312845691"“
. AWS -
Nullwerte sind in einem ganzzahligen Feld vorhanden. Eine Problemumgehung besteht darin, die Spalte mit den Nullwerten als
string
zu erstellen und dann mitCAST
das Feld in einer Abfrage zu konvertieren, wobei der Standardwert0
für Nullwerte bereitgestellt wird. Weitere Informationen finden Sie unter Wenn ich CSV Daten in Athena abfrage, erhalte ich im AWS Knowledge Center die Fehlermeldung "HIVEBAD_ _DATA: Fehler beim Parsen des Feldwerts" für Feld x: Für die Eingabezeichenfolge: „"“.
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: Error opening Hive split s3://amzn-s3-demo-bucket/: Slow down“ 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.
HIVECURSOR_ _ERROR: Unerwartetes Ende des Eingabestreams
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: Falsch 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: Das Eingabeformat konnte 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 Eigenschaften der AWS Glue Tabellendefinition 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 Geben Sie einen Speicherort für die Abfrageergebnisse an im Thema Arbeiten Sie 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 AWS Glue , deren Schema veraltet ist, 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 AWS Glue nach dem Hinzufügen zu Athena geändert wird. Führen Sie einen der folgenden Schritte aus, um das Schema zu aktualisieren:
-
Führen Sie 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 Telefonieren ListTableMetadata
Ein Aufruf des ListTableMetadataAPICAN-Timeouts, 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.
-
StartQueryExecution
zum 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 StartQueryExecutionsicherstellt, dass Athena die Abfrage optimal ausführt, sollten Sie die VerwendungStartQueryExecution
als Alternative zu in Betracht ziehen.ListTableMetadata
Die folgenden AWS CLI Beispiele zeigen, wieStartQueryExecution
Sie anstelle vonListTableMetadata
alle Metadaten von Tabellen in Ihrem Datenkatalog abrufen können.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.
JSONverwandte Fehler
NULLoder falsche Datenfehler beim Versuch, JSON Daten zu lesen
NULLoder falsche Datenfehler beim Versuch, JSON Daten zu lesen, können verschiedene Ursachen haben. Um Leitungen zu identifizieren, die bei der Verwendung von OpenX Fehler verursachen SerDe, setzen Sie ignore.malformed.json
auftrue
. Fehlerhaft formatierte Datensätze werden als zurückgegeben. NULL Weitere Informationen finden Sie im AWS
Knowledge Center unter Ich erhalte Fehler, wenn ich versuche, JSON Daten in Amazon Athena zu lesen
HIVE_ BAD _DATA: Fehler beim Analysieren des Feldwerts für Feld 0: java.lang.String kann nicht in org.openx.data.jsonserde.json umgewandelt werden. JSONObject
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 mit mehreren Tags mit demselben Namen in unterschiedlichen Groß- und Kleinschreibung abzufragen. 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 löse ich "HIVE_ CURSOR _ERROR: Zeile ist kein gültiges JSON Objekt -JSONException: Doppelter Schlüssel“ beim Lesen von Dateien aus AWS Config Athena
HIVE_ CURSOR _ ERROR Nachrichten mit hübsch gedruckten JSON
Die OpenX JSON SerDe Bibliotheken Bienenstock JSON SerDe und erwarten, dass sich jedes JSON Dokument in einer einzigen Textzeile befindet, ohne dass die Felder im Datensatz durch Zeilenabschlusszeichen voneinander getrennt werden. Wenn der JSON Text ein hübsches Druckformat hat, erhalten Sie möglicherweise eine Fehlermeldung wie HIVE_ CURSOR _ERROR: Zeile ist kein gültiges JSON Objekt
oder HIVE_ CURSOR _ERROR:: Unerwartet JsonParseException end-of-input: erwartetes Schließzeichen für OBJECT
den Versuch, die Tabelle abzufragen, nachdem Sie sie erstellt haben. Weitere Informationen finden Sie unter JSONDatendateien
Bei mehreren JSON Datensätzen wird ein Wert SELECT COUNT von 1 zurückgegeben
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 JSON Eingabedatei mehrere Datensätze im AWS Knowledge Center enthält
Eine Tabelle, die von einem AWS Glue Crawler erstellt wurde, der einen benutzerdefinierten Klassifikator verwendet, kann nicht abgefragt werden JSON
Die Athena-Engine unterstützt keine benutzerdefinierten JSON Klassifikatoren. Um dieses Problem zu umgehen, erstellen Sie eine neue Tabelle ohne den benutzerdefinierten Klassifikator. Um die zu transformierenJSON, können Sie eine Ansicht verwenden CTAS oder erstellen. Wenn Sie beispielsweise mit Arrays arbeiten, können Sie die UNNEST Option zum Reduzieren von verwenden. JSON Eine weitere Option besteht darin, einen AWS Glue ETL Job 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 MSCK REPAIR TABLE verwandten Problemen finden Sie in den Fehlerbehebung Abschnitten Überlegungen und Einschränkungen und auf der MSCK REPAIR TABLE Seite.
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 „Unable to verify/create output bucket“ in
TIMESTAMPDas Ergebnis ist leer
Athena benötigt das TIMESTAMP Java-Format. Weitere Informationen finden Sie unter Wenn ich eine Tabelle in Amazon Athena abfrage, ist das TIMESTAMP Ergebnis im AWS
Knowledge Center leer
Speichern Sie die 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 UNLOAD
Gegensatz dazu erfordert die CTAS Technik die Erstellung einer Tabelle. Weitere Informationen finden Sie unter Wie kann ich eine Athena-Abfrageausgabe in einem anderen Format speichernCSV, z. B. in 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 Geben Sie einen Speicherort für die Abfrageergebnisse an.
Probleme mit Parquet
org.apache.parquet.io. GroupColumnIO kann nicht nach org.apache.parquet.io umgewandelt werden. PrimitiveColumnIO
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 AWS Glue deklarierten Schema.
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 ALTER TABLE SET
TBLPROPERTIES Anweisung CREATE TABLE or, um die SerDe parquet.ignore.statistics
Parquet-Eigenschaft auf zu setzentrue
, wie in den folgenden Beispielen.
CREATETABLEBeispiel
... ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' WITH SERDEPROPERTIES ('parquet.ignore.statistics'='true') STORED AS PARQUET ...
ALTERTABLEBeispiel
ALTER TABLE ... SET TBLPROPERTIES ('parquet.ignore.statistics'='true')
Weitere Informationen zum Parquet Hive finden Sie SerDe unterParkett SerDe.
Partitionierungsprobleme
MSCKREPAIRTABLEentfernt keine veralteten Partitionen
Wenn Sie eine Partition manuell in Amazon S3 löschen und dann ausführen MSCK REPAIRTABLE, erhalten Sie möglicherweise die Fehlermeldung Partitionen fehlen im Dateisystem
. Dies liegt daran, MSCK REPAIR TABLE dass veraltete Partitionen nicht aus den Tabellenmetadaten entfernt werden. 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.
MSCKREPAIRTABLEFehlschlag
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.
MSCKREPAIRTABLEerkennt Partitionen, fügt sie aber nicht hinzu AWS Glue
Dieses Problem kann auftreten, wenn ein Amazon S3 S3-Pfad in Kamelbuchstaben statt in Kleinbuchstaben geschrieben wird oder eine IAM Richtlinie die glue:BatchCreatePartition
Aktion nicht zulässt. Weitere Informationen finden Sie im AWS Knowledge Center unter MSCK REPAIR TABLE erkennt Partitionen in Athena, fügt sie aber nicht hinzu
Partitionsprojektionsbereiche mit dem Datumsformat dd-MM-yyyy-HH -mm-ss oder yyyy-MM-dd funktionieren nicht
Um korrekt zu funktionieren, muss das Datumsformat auf yyyy-MM-dd
HH:00:00
eingestellt sein. Weitere Informationen finden Sie im Stack-Überlauf-Beitrag Athena-Partitionsprojektion funktioniert nicht wie erwartet
PARTITIONBY unterstützt den Typ nicht BIGINT
Konvertieren Sie den Datentyp in string
und 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
Prüfen Sie, ob die Projektion der Zeitbereichseinheit entspricht. <columnName>.interval.unit entspricht dem Trennzeichen für die Partitionen. 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:
"-". number
number
Beachten Sie, dass die Werte durch Kommata voneinander getrennt werden müssen, nicht durch einen Bindestrich. Weitere Informationen finden Sie unter Ganzzahl-Typ.
HIVE_ UNKNOWN _ERROR: Das 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
Wenn das Schema einer Partition vom Schema der Tabelle abweicht, kann eine Abfrage mit der Fehlermeldung HIVE_ _ PARTITION SCHEMA _
fehlschlagenMISMATCH.
Für jede Tabelle im AWS Glue Datenkatalog, die Partitionsspalten enthält, wird das Schema auf Tabellenebene und für jede einzelne Partition innerhalb der Tabelle gespeichert. Das Schema für Partitionen wird von einem AWS Glue Crawler auf der Grundlage der Datenstichprobe aufgefüllt, die er innerhalb der Partition liest.
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 HIVE_PARTITION_SCHEMA_MISMATCH
ab.
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 Die Tabelle ist nicht partitioniert, aber die Partitionsspezifikation ist vorhanden
Dieser Fehler kann auftreten, wenn in der CREATE
TABLE
-Anweisung keine Partitionen definiert wurden. Weitere Informationen finden Sie unter Wie kann ich den Fehler "FAILED: SemanticException table is not partitioned but partition spec exists“ 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 in Amazon Athena eine Tabelle mit definierten Partitionen erstellt, aber wenn ich die Tabelle abfrage, werden im AWS Knowledge Center keine 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 us-east-1.amazonaws.com
enthält. 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 PARTITION
oder ausMSCK REPAIR TABLE
. -
Sie haben einen Bucket, dessen Standardverschlüsselung für die Verwendung von
SSE-S3
konfiguriert 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.{ "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 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, Logs abzufragen, die von einem anderen Konto geschrieben wurden AWS-Service und das zweite Konto zwar der Bucket-Besitzer ist, aber nicht Eigentümer der Objekte im Bucket ist. Weitere Informationen finden Sie im AWS Knowledge Center unter Ich erhalte die Amazon S3 S3-Ausnahme „Zugriff verweigert mit Statuscode: 403“ in Amazon Athena, wenn ich einen Bucket in einem anderen Konto abfrage
Verwenden Sie IAM Rollenanmeldedaten, um eine Verbindung zum Athena-Treiber JDBC herzustellen
Sie können die temporären Anmeldeinformationen einer Rolle abrufen, um die JDBCVerbindung zu Athena zu authentifizieren. Temporäre Anmeldeinformationen haben eine maximale Lebensdauer von 12 Stunden. Weitere Informationen finden Sie unter Wie kann ich meine IAM Rollenanmeldedaten verwenden oder zu einer anderen IAM Rolle wechseln, wenn ich über den JDBC Treiber eine Verbindung zu Athena
Probleme mit der Abfragesyntax
FAILED: NullPointerException Name ist Null
Wenn Sie die AWS Glue CreateTableAPIOperation oder die AWS CloudFormation AWS::Glue::Table
Vorlage verwenden, um eine Tabelle für die Verwendung in Athena zu erstellen, ohne die TableType
Eigenschaft anzugeben, und dann eine DDL Abfrage wie SHOW CREATE TABLE
oder ausführenMSCK REPAIR TABLE
, können Sie die Fehlermeldung erhalten FAILED: NullPointerException Name ist null
.
Um den Fehler zu beheben, geben Sie im Rahmen des AWS Glue CreateTable
API Aufrufs oder der AWS CloudFormation Vorlage einen Wert für das TableInputTableType
Attribut an. Mögliche Werte für TableType
sind EXTERNAL_TABLE
oder VIRTUAL_VIEW
.
Diese Anforderung gilt nur, wenn Sie eine Tabelle mithilfe der AWS Glue
CreateTable
API Operation oder der AWS::Glue::Table
Vorlage erstellen. Wenn Sie mithilfe einer DDL Anweisung oder eines AWS Glue
Crawlers eine Tabelle für Athena 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 — Diese Ausnahme kann unter einer der folgenden Bedingungen auftreten:
-
Sie haben eine Schema-Nichtübereinstimmung zwischen dem Datentyp einer Spalte in der Tabellendefinition und dem tatsächlichen Datentyp des Datensatzes.
-
Sie führen eine
CREATE TABLE AS SELECT
(CTAS) -Abfrage mit ungenauer Syntax aus.
-
-
GENERIC_ INTERNAL _ERROR: Parent Builder ist Null — Diese Ausnahme tritt möglicherweise auf, wenn Sie eine Tabelle mit Spalten des Datentyps
array
abfragen und die O penCSVSer De-Bibliothek verwenden. Das penCSVSerde O-Format unterstützt denarray
Datentyp nicht. -
GENERIC_ INTERNAL _ERROR: Wert überschreitet MAX _ INT — Diese Ausnahme tritt möglicherweise auf, wenn die Quelldatenspalte mit dem Datentyp definiert ist
INT
und einen numerischen Wert größer als 2.147.483.647 hat. -
GENERIC_ INTERNAL _ERROR: Wert überschreitet MAX _ BYTE — Diese Ausnahme tritt möglicherweise auf, wenn die Quelldatenspalte einen numerischen Wert hat, der die zulässige Größe für den Datentyp überschreitet.
BYTE
Der DatentypBYTE
ist gleichTINYINT
.TINYINT
ist 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 entspricht nicht der Anzahl der Filter. Diese Ausnahme wird möglicherweise angezeigt, wenn Sie inkonsistente Partitionen in 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.
-
Ausführlichere Informationen zu jedem dieser Fehler 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 den Regex SerDe in einer CREATE TABLE Anweisung verwenden und die Anzahl der Regex-Gruppen 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 der passenden Gruppen entspricht nicht der Anzahl der Spalten“ in Amazon Athena
queryString Bedingung nicht erfüllt: Das Element muss eine Länge haben, die kleiner oder gleich 262144 ist
Die maximale Länge der Abfragezeichenfolge in Athena (262.144 Byte) ist kein einstellbares Kontingent. AWS Support kann das Kontingent nicht für Sie 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: Die Spalte kann nicht aufgelöst werden
Dieser Fehler kann auftreten, wenn Sie eine von einem AWS Glue Crawler erstellte Tabelle anhand einer UTF -8-codierten CSV Datei abfragen, die eine Bytereihenfolge-Markierung () hat. BOM AWS Glue erkennt die nicht BOMs und ändert sie in Fragezeichen, die Amazon Athena nicht erkennt. Die Lösung besteht darin, das Fragezeichen in Athena oder in AWS Glue zu entfernen.
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: line
.nnn
:nn
: Zu viele Argumente für function call 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 von Drosselung AWS Glue oder Lake Formation zu Timeouts kommen. APIs 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 aufnehmen. AWS Support Weitere Informationen erhalten Sie unter AWS CloudTrail Logs abfragen und Amazon Athena API Athena-Anrufe protokollieren mit AWS CloudTrail.
Informationen zu Problemen mit dem Abfrage-Timeout bei Verbundabfragen beim Aufrufen von finden Sie unter ListTableMetadata
API. Timeout beim Telefonieren ListTableMetadata
Probleme mit Drosselung
Wenn Ihre Abfragen die Grenzwerte abhängiger Dienste wie Amazon S3, AWS KMS, AWS Glue oder überschreiten AWS Lambda, können Sie mit den folgenden Meldungen rechnen. 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, mit der Sie anrufen können, überschrittenKMS. 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 Beheben Sie Arbeitsgruppenfehler.
Weitere Ressourcen
Auf den folgenden Seiten finden Sie zusätzliche Informationen zur Behebung von Problemen mit Amazon Athena.
Die folgenden AWS Ressourcen können ebenfalls 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 (klicken Sie auf Support AWS Management Console, Support Center) oder stellen Sie mithilfe des Amazon Athena Athena-Tags eine Frage zu AWS re:POST