Filtern und Abrufen von Daten mit Amazon S3 Select - Amazon Simple Storage Service

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.

Filtern und Abrufen von Daten mit Amazon S3 Select

Mit Amazon S3 Select können Sie mit SQL (Structured Query Language)-Anweisungen die Inhalte von Amazon S3-Objekten filtern, sodass nur die tatsächlich von Ihnen benötigte Teilmenge an Daten abgerufen wird. Wenn Sie die Daten mit Amazon S3 Select filtern, wird die von Amazon S3 übertragene Datenmenge reduziert, wodurch sich die Kosten und Latenzzeiten für diesen Datenabruf verringern.

Amazon S3 Select funktioniert für Objekte, die in den Formaten CSV, JSON oder Apache Parquet gespeichert sind. Es funktioniert auch mit Objekten, die mit GZIP oder BZIP2 (nur für CSV- und JSON-Objekte) komprimiert wurden, sowie für serverseitig verschlüsselte Objekte. Als Format für die Ergebnisse geben Sie entweder CSV oder JSON an. Sie können ebenfalls festlegen, wie die Datensätze im Ergebnis getrennt werden.

In der Anforderung werden SQL-Ausdrücke an Amazon S3 übergeben. Amazon S3 Select unterstützt eine Teilmenge von SQL. Weitere Informationen zu den von Amazon S3 Select unterstützten SQL-Elementen finden Sie unter SQL-Referenz für Amazon S3 Select.

Sie können SQL-Abfragen über AWS-SDKs, den SelectObjectContent-REST-API-Vorgang, die AWS Command Line Interface (AWS CLI) oder die Amazon S3-Konsole ausführen. Bei der Amazon S3-Konsole ist die zurückgegebene Datenmenge auf 40 MB begrenzt. Sollen mehr Daten abgerufen werden, verwenden Sie die AWS CLI oder die API.

Voraussetzungen und Einschränkungen

Für die Verwendung von Amazon S3 Select müssen folgende Voraussetzungen erfüllt sein:

  • Sie haben die Berechtigung s3:GetObject für das abzufragende Objekt.

  • Falls das abzufragende Objekt serverseitig mit vom Kunden bereitgestellten Verschlüsselungsschlüsseln (SSE-C) verschlüsselt ist, müssen Sie https verwenden und den Verschlüsselungsschlüssel in der Anforderung angeben.

Für die Verwendung von Amazon S3 Select gelten die folgenden Einschränkungen:

  • Die maximale Länge des SQL-Ausdrucks ist 256 KB.

  • Die Maximallänge eines Datensatzes in der Eingabe oder im Ergebnis liegt bei 1 MB.

  • Amazon S3 Select kann nur mithilfe des JSON-Ausgabeformats verschachtelte Daten übermitteln.

  • Sie können Objekte in den Speicherklassen S3 Glacier Flexible Retrieval, S3 Glacier Deep Archive oder Reduced Redundancy Storage (RRS) nicht abfragen. Sie können auch die Objekte auf der S3 Intelligent-Tiering-Zugriffsebene „Archive Access“ oder „Deep Archive“ nicht abfragen. Weitere Informationen über Speicherklassen finden Sie unter Verwenden von Amazon-S3-Speicherklassen.

Bei Verwendung von Amazon S3 Select mit Parquet-Objekten gelten zusätzliche Einschränkungen.

  • Amazon S3 Select unterstützt ausschließlich die Spaltenkompression mittels GZIP oder Snappy. Amazon S3 Select unterstützt für Parquet-Objekte keine Kompression ganzer Objekte.

  • Amazon S3 Select unterstützt keine Parquet-Ausgabe. Sie müssen das Ausgabeformat als CSV oder JSON angeben.

  • Die Maximalgröße für unkomprimierte Zeilengruppen beträgt 512 MB.

  • Sie müssen die im Schema des Objekts angegebenen Datentypen verwenden.

  • Select-Anfragen für ein wiederholtes Feld geben ausschließlich den letzten Wert zurück.

Erstellen einer Anforderung

Beim Erstellen einer Anforderung geben Sie die Details des abzufragenden Objekts mithilfe eines InputSerialization-Objekts an. Die Details zur Rückgabe der Ergebnisse geben Sie mit einem OutputSerialization-Objekt an. Außerdem binden Sie den SQL-Ausdruck ein, der von Amazon S3 zum Filtern der Anforderung verwendet wird.

Weitere Informationen zum Erstellen einer Amazon S3 Select-Anforderung finden Sie unter SelectObjectContent in der Referenz zu Amazon Simple Storage Service API. In den folgenden Abschnitten finden Sie eines der SDK-Codebeispiele.

Anforderungen mittels Scanbereichen

Mit Amazon S3 Select können Sie eine Teilmenge eines Objekts scannen, indem Sie einen abzufragenden Byte-Bereich angeben. Mit dieser Fähigkeit können Sie das gesamte Objekt parallel scannen, indem Sie die Arbeit in separate Amazon S3 Select-Anforderungen für eine Reihe von sich nicht überlappenden Scanbereichen aufteilen.

Scanbereiche müssen nicht an Datensatzgrenzen ausgerichtet werden. Eine Scanbereichsanforderung von Amazon S3 Select wird über den angegebenen Byte-Bereich ausgeführt. Ein Datensatz, der im angegebenen Scanbereich beginnt, aber darüber hinaus reicht, wird von der Abfrage bearbeitet. Beispiel: Im Folgenden wird ein Amazon S3-Objekt gezeigt, das eine Reihe von Datensätzen in einem zeilengetrennten CSV-Format enthält:

A,B C,D D,E E,F G,H I,J

Gehen wir einmal davon aus, dass Sie den Amazon-S3-Select-Parameter ScanRange verwenden, bei (Byte) 1 beginnen und bei (Byte) 4 enden. Der Scanbereich würde also bei „,“ beginnen und der Scan würde bis zum Ende des Datensatzes fortgesetzt, der bei „C“ beginnt. Ihre Scanbereichsanfrage gibt das Ergebnis „C, D“ zurück, da dies das Ende des Datensatzes ist.

Scanbereichsanfragen von Amazon S3 Select unterstützen Parquet-, CSV- (ohne Trennung mit Anführungszeichen) und JSON-Objekte (nur im LINES-Modus) CSV- und JSON-Objekte dürfen nicht komprimiert sein. Wenn bei zeilenbasierten CSV- und JSON-Objekten ein Scanbereich als Teil der Amazon S3-Select-Anforderung angegeben wird, werden alle Datensätze, die innerhalb des Scanbereichs beginnen, verarbeitet. Bei Parquet-Objekten werden alle Zeilengruppen, die innerhalb des angeforderten Scanbereich beginnen, verarbeitet.

Scanbereichsanfragen von Amazon S3 Select stehen zur Nutzung mit der AWS CLI, der Amazon S3-API und AWS-SDKs zur Verfügung. Sie können den ScanRange-Parameter in der Amazon S3 Select-Anfrage als diese Funktion verwenden. Weitere Informationen finden Sie unter SelectObjectContent in der API-Referenz zu Amazon Simple Storage Service.

Fehler

Amazon S3 Select gibt einen Fehlercode und eine zugehörige Fehlermeldung zurück, wenn beim Versuch, eine Abfrage auszuführen, ein Problem auftritt. Eine Liste der Fehlercodes und Beschreibungen finden Sie im Abschnitt List of SELECT Object Content Error Codes auf der Seite Error Responses im Amazon-Simple-Storage-Service-API-Referenz.

Weitere Informationen zu Amazon S3 Select finden Sie in den folgenden Themen: