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

UNLOAD

Schreibt Abfrageergebnisse aus einer SELECT-Anweisung in das angegebene Datenformat. Zu den unterstützten Formaten UNLOAD gehören Apache ParquetORC, Apache Avro undJSON. CSVist das einzige Ausgabeformat, das vom SELECT Befehl Athena unterstützt wird, aber Sie können den UNLOAD Befehl, der eine Vielzahl von Ausgabeformaten unterstützt, verwenden, um Ihre SELECT Abfrage einzuschließen und ihre Ausgabe in eines der unterstützten Formate umzuschreiben. UNLOAD

Sie können die CTAS Anweisung zwar verwenden, um Daten in anderen Formaten als auszugebenCSV, diese Anweisungen erfordern jedoch auch die Erstellung einer Tabelle in Athena. Die UNLOAD Anweisung ist nützlich, wenn Sie die Ergebnisse einer SELECT Abfrage in einem anderen CSV Format ausgeben möchten, aber die zugehörige Tabelle nicht benötigen. Eine nachgelagerte Anwendung könnte beispielsweise verlangen, dass die Ergebnisse einer SELECT Abfrage im JSON Format vorliegen, und Parquet oder ORC könnte einen Leistungsvorteil bieten, als CSV wenn Sie beabsichtigen, die Ergebnisse der SELECT Abfrage für zusätzliche Analysen zu verwenden.

Überlegungen und Einschränkungen

Beachten Sie bei der Verwendung der UNLOAD-Anweisung in Athena die folgenden Punkte:

  • Keine globale Reihenfolge von DateienUNLOAD-Ergebnisse werden parallel in mehrere Dateien geschrieben. Wenn die SELECT-Abfrage in der UNLOAD-Anweisung eine Sortierreihenfolge angibt, wird der Inhalt jeder Datei sortiert, aber die Dateien werden nicht relativ zueinander sortiert.

  • Verwaiste Daten nicht gelöscht – Im Falle eines Fehlers versucht Athena nicht, verwaiste Daten zu löschen. Dieses Verhalten entspricht dem Verhalten von INSERT INTO Anweisungen für CTAS und.

  • Maximale Partitionen – Die maximale Anzahl von Partitionen, die mit UNLOAD verwendet werden können, beträgt 100.

  • Metadaten- und Manifestdateien– Athena generiert für jede UNLOAD-Abfrage eine Metadatendatei und eine Datenmanifestdatei. Das Manifest verfolgt die Dateien, die die Abfrage geschrieben hat. Beide Dateien werden in Ihrem Athena-Abfrageergebnisspeicherort in Amazon S3 gespeichert. Weitere Informationen finden Sie unter Identifizieren Sie die Ausgabedateien der Abfrage.

  • VerschlüsselungUNLOAD-Ausgabedateien werden gemäß der für Amazon S3 verwendeten Verschlüsselungskonfiguration verschlüsselt. Um die Verschlüsselungskonfiguration für die Verschlüsselung Ihres UNLOAD Ergebnisses einzurichten, können Sie den EncryptionConfiguration APIverwenden.

  • Vorbereitete AnweisungenUNLOADkann mit vorbereiteten Anweisungen verwendet werden. Informationen zu vorbereiteten Anweisungen in Athena finden Sie unter Verwenden Sie parametrisierte Abfragen.

  • Dienstkontingente — UNLOAD verwendet DML Abfragekontingente. Kontigentinformationen finden Sie unter Service Quotas.

  • Erwarteter Bucket-Eigentümer – Die Einstellung für den erwarteten Bucket-Eigentümer gilt nicht für den Amazon-S3-Speicherort, der in der UNLOAD-Abfrage angegeben wurde. Die erwartete Bucket-Eigentümereinstellung gilt nur für den Amazon-S3-Ausgabespeicherort, den Sie für Athena-Abfrageergebnisse angeben. Weitere Informationen finden Sie unter Geben Sie mithilfe der Athena-Konsole einen Speicherort für Abfrageergebnisse an.

Syntax

Die UNLOAD-Anweisung verwendet die folgende Syntax.

UNLOAD (SELECT col_name[, ...] FROM old_table) TO 's3://amzn-s3-demo-bucket/my_folder/' WITH ( property_name = 'expression' [, ...] )

Außer beim Schreiben in Partitionen muss das TO Ziel einen Speicherort in Amazon S3 angeben, der keine Daten enthält. Bevor die UNLOAD-Abfrage in den angegebenen Speicherort schreibt, überprüft sie, ob der Bucket-Speicherort leer ist. Da UNLOAD keine Daten an den angegebenen Speicherort schreibt, wenn der Speicherort bereits Daten enthält, überschreibt UNLOAD keine vorhandenen Daten. Um einen Bucket-Speicherort als Ziel für UNLOAD wiederzuverwenden, löschen Sie die Daten am Bucket-Speicherort und führen Sie die Abfrage dann erneut aus.

Beachten Sie, dass dieses Verhalten beim UNLOAD Schreiben in Partitionen anders ist. Wenn Sie dieselbe UNLOAD Abfrage mehrmals ausführen, die dieselbe SELECT Anweisung, denselben TO Speicherort und dieselben Partitionen hat, entlädt jede UNLOAD Abfrage die Daten an dem angegebenen Speicherort und den angegebenen Partitionen in Amazon S3.

Parameter

Mögliche Werte für property_name lauten wie folgt.

format = 'file_format'

Erforderlich Gibt das Dateiformat der Ausgabe an. Mögliche Werte für file_format sindORC, PARQUETAVRO,JSON, oderTEXTFILE.

Komprimierung = 'compression_format'

Optional. Diese Option ist spezifisch für die Formate ORC und Parquet. Für ORC ist zlib die Standardeinstellung und für Parquet ist die Standardeinstellunggzip. Informationen über unterstützte Komprimierungsformate finden Sie unter Unterstützung der Athena-Komprimierung.

Anmerkung

Diese Option gilt nicht für das Format AVRO. Athena verwendet gzip für JSON- und TEXTFILE-Formate.

Kompressionsstufe = compression_level

Optional. Die für die Komprimierung zu verwendende Komprimierungsstufe. ZSTD Diese Eigenschaft gilt nur für die ZSTD Komprimierung. Weitere Informationen finden Sie unter Verwenden Sie ZSTD Kompressionsstufen.

field_delimiter = 'delimiter'

Optional. Gibt ein einstelliges Feldtrennzeichen für Dateien in, und anderen Textformaten anCSV. TSV Das folgende Beispiel verwendet ein Komma als Trennzeichen:

WITH (field_delimiter = ',')

Derzeit werden mehrzeilige Feldtrennzeichen nicht unterstützt. Wenn Sie kein Feldtrennzeichen angeben, wird das Oktalzeichen \001 (^A) verwendet.

partitioned_by = [ARRAY col_name[,...] ]

Optional. Eine Array-Liste der Spalten, nach denen die Ausgabe partitioniert ist.

Anmerkung

Stellen Sie in Ihrer SELECT-Anweisung sicher, dass die Namen der partitionierten Spalten in Ihrer Spaltenliste an letzter Stelle stehen.

Beispiele

Das folgende Beispiel schreibt die Ausgabe einer SELECT Abfrage s3://amzn-s3-demo-bucket/unload_test_1/ unter Verwendung des JSON Formats an den Amazon S3 S3-Speicherort.

UNLOAD (SELECT * FROM old_table) TO 's3://amzn-s3-demo-bucket/unload_test_1/' WITH (format = 'JSON')

Im folgenden Beispiel wird die Ausgabe einer SELECT-Abfrage im Parquet-Format mithilfe der Snappy-Komprimierung geschrieben.

UNLOAD (SELECT * FROM old_table) TO 's3://amzn-s3-demo-bucket/' WITH (format = 'PARQUET',compression = 'SNAPPY')

Im folgenden Beispiel werden vier Spalten im Textformat geschrieben, wobei die Ausgabe durch die letzte Spalte partitioniert ist.

UNLOAD (SELECT name1, address1, comment1, key1 FROM table1) TO 's3://amzn-s3-demo-bucket/ partitioned/' WITH (format = 'TEXTFILE', partitioned_by = ARRAY['key1'])

Im folgenden Beispiel werden die Abfrageergebnisse unter Verwendung des Parquet-Dateiformats, der Komprimierung und der ZSTD ZSTD Komprimierungsstufe 4 an den angegebenen Speicherort entladen.

UNLOAD (SELECT * FROM old_table) TO 's3://amzn-s3-demo-bucket/' WITH (format = 'PARQUET', compression = 'ZSTD', compression_level = 4)

Weitere Ressourcen