Probleme in Athena beheben - Amazon Athena

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.

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:

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? im AWS Knowledge Center.

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? im AWS -Wissenscenter oder sehen Sie sich das Wissenscenter-Video an.

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:

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 Verwendung StartQueryExecution als Alternative zu in Betracht ziehen. ListTableMetadata Die folgenden AWS CLI Beispiele zeigen, wie StartQueryExecution Sie anstelle von ListTableMetadata 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.

Weitere Informationen zur Problembehandlung bei Verbundabfragen finden Sie unter Common_Problems im aws-athena-query-federation Abschnitt awslabs/ von oder in der GitHub Dokumentation zu den einzelnen Athena-Datenquellenconnectors.

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, oder schauen Sie sich das Knowledge Center-Video an.

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? im AWS Knowledge Center.

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 in der SerDe OpenX-Dokumentation unter GitHub.

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 Amazon Athena? im Knowledge Center. AWS

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? im AWS Knowledge Center.

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. AWS Glue Data Catalog

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 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

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? im Knowledge Center AWS .

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 partition_value_$folder$ werden in Simple Storage Service (Amazon S3) erstellt. Sie müssen diese Dateien manuell entfernen.

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“ im AWS -Wissenscenter.

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:<request_id>) erhalten, wenn die folgenden Bedingungen zutreffen:

  1. Sie führen eine DDL Abfrage wie ALTER TABLE ADD PARTITION oder ausMSCK REPAIR TABLE.

  2. Sie haben einen Bucket, dessen Standardverschlüsselung für die Verwendung von SSE-S3 konfiguriert ist.

  3. Der Bucket verfügt auch über eine Bucket-Richtlinie wie die folgende, die PutObject-Anforderungen erzwingt, die PUT-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 herstelle? im AWS Knowledge Center.

Probleme mit der Abfragesyntax

FAILED: NullPointerException Name ist Null

Wenn Sie die AWS Glue CreateTableAPIOperation oder die AWS CloudFormation AWS::Glue::TableVorlage 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 TableInputTableTypeAttribut 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? im AWS -Wissenscenter.

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 den array 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 Datentyp BYTE ist gleich TINYINT. 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? im AWS Knowledge Center.

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? im AWS Knowledge Center.

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? im AWS -Wissenscenter.

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: linennn: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 ListTableMetadataAPI. 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

Quote überschritten.

TooManyRequestsException

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? im Knowledge Center AWS .

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.