Fehlerbehebung bei Abfragen in Amazon Redshift Spectrum - Amazon Redshift

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.

Fehlerbehebung bei Abfragen in Amazon Redshift Spectrum

Im Folgenden finden Sie eine Kurzreferenz, die einige häufige Probleme identifiziert und behebt, die bei Amazon-Redshift-Spectrum-Abfragen auftreten können. Fragen Sie zur Anzeige der von Redshift Spectrum generierten Fehler die Systemtabelle SVL_S3LOG ab.

Überschreitung der Anzahl erneuter Versuche

Wenn bei einer Amazon-Redshift-Spectrum-Anfrage eine Zeitüberschreitung auftritt, wird die Anfrage abgebrochen und erneut übermittelt. Nach fünf fehlgeschlagenen erneuten Versuchen schlägt die Abfrage mit dem folgenden Fehler fehl.

error:  Spectrum Scan Error: Retries exceeded

Dafür gibt es die folgenden möglichen Ursachen:

  • Große Dateien (über 1 GB). Prüfen Sie die Größe Ihrer Dateien in Amazon S3, und suchen Sie nach großen Dateien und Dateigrößenverzerrungen. Teilen Sie große Dateien in kleinere auf, zwischen 100 MB und 1 GB. Versuchen Sie, die Dateien etwa gleich groß zu halten.

  • Langsamer Netzwerkdurchsatz. Versuchen Sie Ihre Abfrage später erneut.

Zugriff gedrosselt

Amazon Redshift Spectrum unterliegt den Servicekontingenten anderer AWS Services. Bei hoher Auslastung müssen Redshift-Spectrum-Anforderungen möglicherweise verlangsamt werden, was zum folgenden Fehler führt.

error:  Spectrum Scan Error: Access throttled

Es können zwei Arten der Drosselung auftreten:

  • Zugriff gedrosselt von Amazon S3.

  • Der Zugriff wurde gedrosselt von. AWS KMS

Der Fehlerkontext enthält weitere Details zum Typ der Drosselung. Nachfolgend können Sie Ursachen und mögliche Lösungen für diese Drosselung finden.

Zugriff gedrosselt von Amazon S3

Amazon S3 drosselt möglicherweise eine Redshift-Spectrum-Anforderung, wenn die Leseanforderungsrate für ein Präfix zu hoch ist. Informationen zu einer HEAD Anforderungsrate vonGET/, die Sie in Amazon S3 erreichen können, finden Sie unter Optimieren der Amazon S3 S3-Leistung im Amazon Simple Storage Service-Benutzerhandbuch. Die Amazon S3 GET HEAD S3-/-Anforderungsrate berücksichtigt alle GET HEAD /-Anfragen mit einem Präfix, sodass sich verschiedene Anwendungen, die auf dasselbe Präfix zugreifen, die Gesamtanzahl der Anfragen teilen.

Wenn Ihre Redshift Spectrum-Anfragen häufig von Amazon S3 gedrosselt werden, reduzieren Sie die Anzahl der Amazon GET HEAD S3/-Anfragen, die Redshift Spectrum an Amazon S3 sendet. Versuchen Sie dazu, kleine Dateien zu größeren Dateien zusammenzufassen. Wir empfehlen, Dateigrößen von mindestens 64 MB zu verwenden.

Ziehen Sie auch die Partitionierung Ihrer Redshift-Spectrum-Tabellen in Betracht, um von einer frühen Filterung zu profitieren und die Anzahl der Dateien zu reduzieren, auf die in Amazon S3 zugegriffen wird. Weitere Informationen finden Sie unter Partitionierung externer Redshift-Spectrum-Tabellen.

Zugriff gedrosselt von AWS KMS

Wenn Sie Ihre Daten mit serverseitiger Verschlüsselung (SSE-S3 oder SSE -KMS) in Amazon S3 speichern, ruft Amazon S3 AWS KMS für jede Datei, auf die Redshift Spectrum zugreift, eine API Operation auf. Diese Anforderungen zählen für Ihr kryptografisches Operationskontingent. Weitere Informationen finden Sie unter AWS KMS -Anforderungskontingente. Weitere Informationen zu SSE -S3 und SSE - KMS finden Sie unter Schützen von Daten mit serverseitiger Verschlüsselung und Schützen von Daten mithilfe serverseitiger Verschlüsselung mit gespeicherten KMS Schlüsseln AWS KMS im Amazon Simple Storage Service-Benutzerhandbuch.

Ein erster Schritt zur Reduzierung der Anzahl der Anfragen, an die Redshift Spectrum stellt, AWS KMS besteht darin, die Anzahl der abgerufenen Dateien zu reduzieren. Versuchen Sie dazu, kleine Dateien zu größeren Dateien zusammenzufassen. Wir empfehlen, Dateigrößen von mindestens 64 MB zu verwenden.

Wenn Ihre Redshift Spectrum-Anfragen häufig gedrosselt werden, sollten Sie erwägen AWS KMS, eine Erhöhung des Kontingents für Ihre Anforderungsrate für AWS KMS kryptografische Operationen zu beantragen. Informationen zum Anfordern einer Kontingenterhöhung finden Sie unter AWS -Service Limits im Allgemeine Amazon Web Services-Referenz.

Ressourcenlimit überschritten

Redshift Spectrum erzwingt eine Obergrenze für die Speichermenge, die eine Anforderung verwenden kann. Eine Redshift-Spectrum-Anforderung, die mehr Speicher benötigt, schlägt fehl, was zu dem folgenden Fehler führt.

error:  Spectrum Scan Error: Resource limit exceeded

Es gibt zwei häufige Gründe, die dazu führen können, dass eine Redshift-Spectrum-Anforderung ihr Speicherkontingent überschreitet:

  • Redshift Spectrum verarbeitet einen großen Datenblock, der nicht in kleinere Datenblöcke aufgeteilt werden kann.

  • Ein großer Aggregationsschritt wird von Redshift Spectrum verarbeitet.

Es wird empfohlen, ein Dateiformat zu verwenden, das parallele Lesevorgänge mit geteilten Größen von 128 MB oder weniger unterstützt. Unterstützte Dateiformate und allgemeine Richtlinien für die Erstellung von Datendateien finden Sie unter Erstellen von Datendateien für Abfragen in Amazon Redshift Spectrum. Bei Verwendung von Dateiformaten oder Komprimierungsalgorithmen, die keine parallelen Lesevorgänge unterstützen, empfehlen wir, die Dateigrößen zwischen 64 MB und 128 MB zu halten.

Für eine partitionierte Tabelle werden keine Zeilen ausgegeben.

Wenn Ihre Abfrage von einer partitionierten externen Tabelle null Zeilen ausgibt, prüfen Sie, ob für diese externe Tabelle eine Partition hinzugefügt wurde. Redshift Spectrum scannt nur Dateien an einem Amazon-S3-Speicherort, der ausdrücklich mit hinzugefügt wurde ALTER TABLE … ADD PARTITION. Fragen Sie die Ansicht SVV_EXTERNAL_PARTITIONS ab, um die vorhandenen Partitionen zu finden. Führen Sie für jede fehlende Partition ALTER TABLE … ADD PARTITION aus.

„Nicht autorisiert“-Fehler

Stellen Sie sicher, dass die IAM Rolle für den Cluster den Zugriff auf die Amazon S3 S3-Dateiobjekte ermöglicht. Wenn sich Ihre externe Datenbank auf Amazon Athena befindet, stellen Sie sicher, dass die IAM Rolle den Zugriff auf Athena-Ressourcen ermöglicht. Weitere Informationen finden Sie unter IAMRichtlinien für Amazon Redshift Spectrum.

Inkompatible Datenformate

Bei einem Spaltenformat wie Apache Parquet ist der Spaltentyp mit den Daten eingebettet. Der Spaltentyp in der CREATE EXTERNAL TABLE Definition muss mit dem Spaltentyp der Datendatei übereinstimmen. Wenn dies nicht der Fall ist, erhalten Sie eine Fehlermeldung wie die folgende:

File 'https://s3bucket/location/file has an incompatible Parquet schema for column ‘s3://s3bucket/location.col1'. Column type: VARCHAR, Par

Die Fehlermeldung kann aus Längengründen verkürzt angezeigt werden. Um die gesamte Fehlermeldung, einschließlich Spaltenname und Spaltentyp, abzurufen, fragen Sie die Systemansicht SVL_S3LOG ab.

Im folgenden Beispiel wird SVL _S3 LOG nach der letzten abgeschlossenen Abfrage abgefragt.

select message from svl_s3log where query = pg_last_query_id() order by query,segment,slice;

nachfolgend sehen Sie ein Beispiel für ein Ergebnis mit der vollständigen Fehlermeldung.

                            message
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––-
Spectrum Scan Error. File 'https://s3bucket/location/file has an incompatible
Parquet schema for column ' s3bucket/location.col1'. 
Column type: VARCHAR, Parquet schema:\noptional int64 l_orderkey [i:0 d:1 r:0]\n

Um den Fehler zu korrigieren, ändern Sie die externe Tabelle so, dass sie dem Spaltentyp der Parquet-Datei entspricht.

Syntaxfehler bei der Verwendung von Hive DDL in Amazon Redshift

Amazon Redshift unterstützt die Datendefinitionssprache (DDL) CREATE EXTERNALTABLE, die Hive DDL ähnelt. Die beiden Typen von DDL sind jedoch nicht immer exakt identisch. Wenn Sie Hive kopierenDDL, um externe Amazon Redshift Redshift-Tabellen zu erstellen oder zu ändern, können Syntaxfehler auftreten. Im Folgenden finden Sie Beispiele für Unterschiede zwischen Amazon Redshift und HiveDDL:

  • Amazon Redshift erfordert einfache Anführungszeichen ('), während Hive doppelte Anführungszeichen („) DDL unterstützt.

  • Amazon Redshift unterstützt den STRING Datentyp nicht. Verwenden Sie stattdessen VARCHAR.

Berechtigungen zum Erstellen temporärer Tabellen

Um Redshift Spectrum-Abfragen auszuführen, benötigt der Datenbankbenutzer die Berechtigung, temporäre Tabellen in der Datenbank zu erstellen. Das folgende Beispiel erteilt der Benutzergruppe spectrumdb temporäre Berechtigungen für die Datenbank spectrumusers.

grant temp on database spectrumdb to group spectrumusers;

Weitere Informationen finden Sie unter GRANT.

Ungültiger Bereich

Redshift Spectrum erwartet, dass Dateien in Amazon S3, die zu einer externen Tabelle gehören, bei einer Abfrage nicht überschrieben werden. Sollte dies doch geschehen, kann der folgende Fehler auftreten.

Error: HTTP response error code: 416 Message: InvalidRange The requested range is not satisfiable

Um den Fehler zu vermeiden, stellen Sie sicher, dass Amazon S3-Dateien nicht überschrieben werden, während sie mit Redshift Spectrum abgefragt werden.

Ungültige Parquet-Versionsnummer

Redshift Spectrum überprüft die Metadaten jeder Apache Parquet-Datei, auf die zugegriffen wird. Wenn die Prüfung fehlschlägt, kann dies zu einem Fehler wie dem folgenden führen:

File 'https://s3.region.amazonaws.com/s3bucket/location/file has an invalid version number

Es gibt zwei häufige Gründe, die dazu führen können, dass die Überprüfung fehlschlägt:

  • Die Parquet-Datei wurde bei der Abfrage überschrieben (siehe Ungültiger Bereich ).

  • Die Parquett-Datei ist beschädigt.