Überlegungen und Einschränkungen für CTAS Abfragen - 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.

Überlegungen und Einschränkungen für CTAS Abfragen

In den folgenden Abschnitten werden Überlegungen und Einschränkungen beschrieben, die Sie bei der Verwendung von CREATE TABLE AS SELECT (CTAS) -Abfragen in Athena berücksichtigen sollten.

Lernen Sie die CTAS Abfragesyntax kennen

Die CTAS Abfragesyntax unterscheidet sich von der Syntax, die zum Erstellen von Tabellen CREATE [EXTERNAL] TABLE verwendet wird. Siehe CREATE TABLE AS.

Der Unterschied zwischen Ansichten und CTAS Abfragen

CTASAbfragen schreiben neue Daten an einen bestimmten Ort in Amazon S3. Ansichten schreiben keine Daten.

Geben Sie einen Speicherort für Ihre CTAS Abfrageergebnisse an

Wenn Ihre Arbeitsgruppe die clientseitige Einstellung überschreibt, die für den Speicherort der Abfrageergebnisse gilt, erstellt Athena die Tabelle am Speicherort s3://amzn-s3-demo-bucket/tables/<query-id>/. Den für die Arbeitsgruppe angegebenen Speicherort für Abfrageergebnisse können Sie in den Arbeitsgruppendetails anzeigen.

Wenn Ihre Arbeitsgruppe den Speicherort der Abfrageergebnisse nicht überschreibt, können Sie die Syntax WITH (external_location ='s3://amzn-s3-demo-bucket/') in Ihrer CTAS Abfrage verwenden, um anzugeben, wo Ihre CTAS Abfrageergebnisse gespeichert werden.

Anmerkung

Die Eigenschaft external_location muss einen Speicherort angeben, der leer ist. Eine CTAS Abfrage überprüft, ob die Pfadposition (Präfix) im Bucket leer ist, und überschreibt niemals die Daten, wenn der Speicherort bereits Daten enthält. Um denselben Speicherort erneut zu verwenden, löschen Sie die Daten im Schlüsselpräfixspeicherort im Bucket.

Wenn Sie die Syntax external_location auslassen und die Arbeitsgruppeneinstellung nicht verwenden, verwendet Athena die clientseitige Einstellung für den Abfrageergebnisspeicherort und erstellt die Tabelle am Speicherort s3://amzn-s3-demo-bucket/<Unsaved-or-query-name>/<year>/<month/<date>/tables/<query-id>/.

Findet verwaiste Dateien

Wenn eine CTAS- oder INSERT INTO-Anweisung fehlschlägt, ist es möglich, dass verwaiste Daten am Datenspeicherort belassen werden. Da Athena keine Daten oder Teildaten aus Ihrem Bucket löscht, können Sie diese Teildaten möglicherweise in nachfolgenden Abfragen lesen. Zur Suche nach verwaisten Dateien zwecks Überprüfung oder Löschung können Sie die Daten-Manifest-Datei verwenden, die Athena zur Verfügung stellt, um die Liste der zu schreibenden Dateien zu verfolgen. Weitere Informationen finden Sie unter Identifizieren Sie die Ausgabedateien der Abfrage und DataManifestLocation.

Denken Sie daran, dass ORDER BY-Klauseln ignoriert werden

In einer CTAS Abfrage ignoriert Athena ORDER BY Klauseln im SELECT Teil der Abfrage.

Gemäß der SQL Spezifikation (ISO9075 Teil 2) ist die Reihenfolge der Zeilen einer durch einen Abfrageausdruck angegebenen Tabelle nur für den Abfrageausdruck garantiert, der die Klausel unmittelbar enthält. ORDER BY Tabellen in SQL sind ohnehin von Natur aus ungeordnet, und die Implementierung der ORDER BY in sub-query klauseln würde sowohl dazu führen, dass die Abfrage schlecht abschneidet als auch nicht zu einer geordneten Ausgabe führt. Daher gibt es bei CTAS Athena-Abfragen keine Garantie dafür, dass die in der ORDER BY Klausel angegebene Reihenfolge beim Schreiben der Daten beibehalten wird.

Wählen Sie ein Format zum Speichern Ihrer Abfrageergebnisse

Sie können CTAS Ergebnisse inPARQUET,ORC, AVROJSON, und speichernTEXTFILE. Trennzeichen aus mehreren Zeichen werden für das Format nicht unterstützt. CTAS TEXTFILE Wenn Sie kein Datenspeicherformat angeben, werden CTAS Abfrageergebnisse standardmäßig in Parquet gespeichert.

CTASAbfragen erfordern nicht die Angabe von a SerDe , um Formattransformationen zu interpretieren. Siehe Example: Writing query results to a different format.

Ziehen Sie Komprimierungsformate in Betracht

GZIPDie Komprimierung wird für CTAS Abfrageergebnisse in JSON und TEXTFILE -formaten verwendet. Für Parquet können Sie GZIP oder SNAPPY verwenden, der Standardwert ist GZIP. Für können SieORC, LZ4 SNAPPY ZLIBZSTD, oder verwenden. Die Standardeinstellung istZLIB. CTASBeispiele, die Komprimierung spezifizieren, finden Sie unterExample: Specifying data storage and compression formats. Weitere Informationen zur Komprimierung in Athena finden Sie unter Verwenden Sie die Komprimierung in Athena.

Partitionieren und bündeln Sie Ihre Ergebnisse

Sie können die Ergebnisdaten einer CTAS Abfrage partitionieren und in einem Bucket zusammenfassen. Um Eigenschaften der Zieltabelle anzugeben, fügen Sie Partitionierungs- und Bucketing-Prädikate am Ende der Klausel hinzu. WITH Weitere Informationen erhalten Sie unter Verwenden Sie Partitioning und Bucketing und Example: Creating bucketed and partitioned tables.

Wenn Sie CTAS eine partitionierte Tabelle erstellen, hat Athena ein Schreiblimit von 100 Partitionen. Hinweise zum Umgehen der Begrenzung auf 100 Partitionen finden Sie unter Verwenden Sie CTAS und INSERTINTO, um das Limit von 100 Partitionen zu umgehen.

Verschlüsseln Sie Ihre Ergebnisse

Sie können CTAS Abfrageergebnisse in Amazon S3 auf ähnliche Weise verschlüsseln, wie Sie andere Abfrageergebnisse in Athena verschlüsseln. Weitere Informationen finden Sie unter Verschlüsseln Sie die in Amazon S3 gespeicherten Athena-Abfrageergebnisse.

Die Einstellung für den Besitzer des erwarteten Buckets gilt nicht für CTAS

Bei CTAS Kontoauszügen gilt die Einstellung für den erwarteten Bucket-Besitzer nicht für den Speicherort der Zieltabelle in Amazon S3. 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.

Die Datentypen der Spalten werden beibehalten

Die Spaltendatentypen für eine CTAS Abfrage entsprechen denen, die für die ursprüngliche Abfrage angegeben wurden.