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 für UNLOAD gehören Apache Parquet, ORC, Apache Avro und JSON. CSV ist 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

Obwohl Sie die CTAS-Anweisung verwenden können, um Daten in anderen Formaten als CSV auszugeben, erfordern diese Anweisungen auch die Erstellung einer Tabelle in Athena. Die UNLOAD-Anweisung ist nützlich, wenn Sie die Ergebnisse einer SELECT-Abfrage in einem Nicht-CSV-Format ausgeben möchten, aber die zugehörige Tabelle nicht benötigen. Beispielsweise kann eine nachgelagerte Anwendung erfordern, dass die Ergebnisse einer SELECT-Abfrage im JSON-Format vorliegen, und Parquet oder ORC können einen Leistungsvorteil gegenüber CSV bieten, wenn Sie die Ergebnisse der SELECT-Abfrage für zusätzliche Analysen verwenden möchten.

Ü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 ist das gleiche wie bei CTAS und INSERT INTO-Anweisungen.

  • 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 von Abfrageausgabedateien.

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

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

  • Service Quotas – 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 Angeben eines Speicherorts des Abfrageergebnisses mithilfe der Athena-Konsole.

Syntax

Die UNLOAD-Anweisung verwendet die folgende Syntax.

UNLOAD (SELECT col_name[, ...] FROM old_table) TO 's3://DOC-EXAMPLE-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

Die möglichen Werte für property_name sind wie folgt.

format = 'file_format'

Erforderlich Gibt das Dateiformat der Ausgabe an. Mögliche Werte für file_format sind ORC, PARQUET, AVRO, JSON oder TEXTFILE.

Kompression = 'compression_format'

Optional. Diese Option ist spezifisch für die Formate ORC und Parquet. Für ORC ist der Standardwert zlib und für Parquet der Standardwert gzip. 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.

compression_level = compression_level

Optional. Die Komprimierungsstufe, die für die ZSTD-Komprimierung verwendet werden soll. Diese Eigenschaft gilt nur für die ZSTD-Komprimierung. Weitere Informationen finden Sie unter Verwendung von ZSTD-Komprimierungsstufen in Athena.

field_delimiter = 'delimiter'

Optional. Gibt ein Feldtrennzeichen aus einem einzigen Zeichen für Dateien in CSV, TSV und anderen Textformaten an. 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

Im folgenden Beispiel wird die Ausgabe einer SELECT-Abfrage im JSON-Format an den Amazon-S3-Speicherort s3://DOC-EXAMPLE-BUCKET/unload_test_1/ geschrieben.

UNLOAD (SELECT * FROM old_table) TO 's3://DOC-EXAMPLE-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://DOC-EXAMPLE-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://DOC-EXAMPLE-BUCKET/ partitioned/' WITH (format = 'TEXTFILE', partitioned_by = ARRAY['key1'])

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

UNLOAD (SELECT * FROM old_table) TO 's3://DOC-EXAMPLE-BUCKET/' WITH (format = 'PARQUET', compression = 'ZSTD', compression_level = 4)

Weitere Ressourcen