Registrieren Sie Bucket-Kataloge von S3-Tabellen und fragen Sie Tabellen von Athena ab
Tabellen-Buckets für Amazon S3 sind ein Bucket-Typ in Amazon S3, der speziell zum Speichern von Tabellendaten in Apache-Iceberg-Tabellen entwickelt wurde. Tabellen-Buckets automatisieren Tabellenverwaltungsaufgaben wie Komprimierung, Snapshot-Verwaltung und Garbage Collection, um die Abfrageleistung kontinuierlich zu optimieren und die Kosten zu minimieren. Egal, ob Sie gerade erst anfangen oder Tausende von Tabellen in Ihrer Iceberg-Umgebung haben, Tabellen-Buckets vereinfachen Data Lakes in jeder Größenordnung. Weitere Informationen finden Sie unter Tabellen-Buckets.
Überlegungen und Einschränkungen
-
Alle DDL-Operationen, die für Iceberg-Tabellen unterstützt werden, werden für S3-Tabellen unterstützt, mit den folgenden Ausnahmen:
-
ALTER TABLE RENAME,CREATE VIEWundALTER DATABASEwerden nicht unterstützt. -
OPTIMIZEundVACUUM– Sie können die Komprimierung und die Snapshot-Verwaltung in S3 verwalten. Weitere Informationen finden Sie unter Wartungsdokumentation für S3-Tabellen.
-
-
DDL-Abfragen auf S3-Tabellen, die als Athena-Datenquellen registriert sind, werden nicht unterstützt.
-
Die Wiederverwendung von Abfrageergebnissen wird nicht unterstützt.
-
In Arbeitsgruppen mit aktivierter SSE-KMS- und CSE-KMS-Verschlüsselung können Sie keine Schreibvorgänge wie
INSERT,UPDATE,DELETEoderMERGEfür S3-Tabellen ausführen. -
In Arbeitsgruppen, in denen die Option „Zahlung durch den S3-Anforderer“ aktiviert ist, können Sie keine DML-Operationen für S3-Tabellen ausführen.
S3-Tabellen von Athena abfragen
Diese erforderlichen Schritte vor der Arbfrage von S3-Tabellen in Athena ausführen
Erstellen eines S3-Tabellen-Buckets. Weitere Informationen erhalten Sie unter Erstellen eines Buckets im Benutzerhandbuch für Amazon Simple Storage Service.
-
Stellen Sie sicher, dass die Integration Ihrer Tabellen-Buckets mit AWS Glue Data Catalog und AWS Lake Formation erfolgreich ist, indem Sie die Voraussetzungen für die Integration und Integration von Tabellen-Buckets mit AWS-Analytik im Benutzerhandbuch für Amazon Simple Storage Service befolgen.
Anmerkung
Wenn Sie die Integration beim Erstellen eines S3-Tabellen-Buckets über die S3-Konsole in Schritt 1 aktiviert haben, können Sie diesen Schritt überspringen.
Für den Prinzipal, den Sie zum Ausführen von Abfragen mit Athena verwenden, gewähren Sie Lake-Formation-Berechtigungen für den S3-Tabellenkatalog, entweder über die Lake-Formation-Konsole oder AWS CLI.
Abfragen für S3-Tabellen einreichen
Reichen Sie eine
CREATE DATABASE-Anfrage von Athena mit dem oben gewährten Benutzer/der oben gewährten Rolle ein. In diesem Beispiel ists3tablescatalogder übergeordnete Glue-Datenkatalog erstellt aus der Integration unds3tablescatalog/ist der untergeordnete Glue-Datenkatalog, der für jeden S3-Tabellen-Bucket erstellt wurde. Es gibt zwei Möglichkeiten, Abfragen durchzuführen.amzn-s3-demo-bucket-
Verwenden Sie die Datenbank, die Sie im vorherigen Schritt erstellt haben, und erstellen Sie mit
CREATE TABLEeine Tabelle. Das folgende Beispiel erstellt eine Tabelle in der-Datenbank, die Sie zuvor imtest_namespaces3tablescatalog/-Glue-Katalog erstellt haben.amzn-s3-demo-bucket -
Fügen Sie Daten in die Tabelle ein, die Sie im vorherigen Schritt erstellt haben.
-
Nachdem Sie Daten in die Tabelle eingefügt haben, können Sie sie abfragen.
S3-Tabellen in Athena erstellen
Athena unterstützt das Erstellen von Tabellen in vorhandenen S3-Tabellen-Namespaces oder in Athena erstellten Namespaces mit CREATE DATABASE-Anweisungen. Um eine S3-Tabelle aus Athena zu erstellen, ist die Syntax dieselbe wie beim Erstellen einer regulären Iceberg-Tabelle, außer dass Sie LOCATION nicht angeben, wie im folgenden Beispiel gezeigt.
CREATE TABLE [db_name.]table_name (col_name data_type [COMMENT col_comment] [, ...] ) [PARTITIONED BY (col_name | transform, ... )] [TBLPROPERTIES ([, property_name=property_value] )]
Sie können S3-Tabellen auch mit Anweisungen CREATE TABLE AS SELECT (CTAS) erstellen. Weitere Informationen finden Sie unter CTAS für S3-Tabellen.
S3-Tabellen-Bucket-Kataloge als Athena-Datenquellen registrieren
Um S3-Tabellen-Bucket-Kataloge in der Athena-Konsole zu registrieren, führen Sie die folgenden Schritte aus.
-
Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/
. -
Wählen Sie im Navigationsbereich Datenquellen und Kataloge aus.
-
Wählen Sie auf der Seite Datenquellen und Kataloge die Option Datenquellen erstellen aus.
-
Wählen Sie für Eine Datenquelle auswählen die Option Amazon S3 - AWS Glue Data Catalog.
-
Wählen Sie im AWS Glue Data Catalog-Abschnitt für Datenquellenkonto die Option AWS Glue Data Catalog in diesem Konto.
-
Wählen Sie für Tabelle erstellen oder Katalog registrieren die Option Neuen AWS Glue-Katalog registrieren.
-
Geben Sie im Abschnitt Datenquellendetails für Datenquellenname den Namen ein, den Sie verwenden möchten, um die Datenquelle in Ihren SQL-Abfragen anzugeben, oder verwenden Sie den generierten Standardnamen.
-
Wählen Sie für Katalog die Option Durchsuchen aus, um nach einer Liste von AWS Glue-Katalogen im selben Konto zu suchen. Wenn Ihnen keine Kataloge angezeigt werden, erstellen Sie einen in der AWS Glue-Konsole
. -
Wählen Sie im Dialogfeld AWS Glue-Kataloge durchsuchen den gewünschten Katalog aus und klicken Sie dann auf Auswählen.
-
(Optional) Geben Sie für Tags beliebige Schlüssel-Wert-Paare ein, die Sie mit der Datenquelle verknüpfen möchten.
-
Wählen Sie Weiter aus.
-
Überprüfen Sie auf der Seite Überprüfen und erstellen die Richtigkeit der eingegebenen Informationen und wählen Sie dann Datenquelle erstellen.
CTAS für S3-Tabellen
Amazon Athena unterstützt jetzt Operationen CREATE TABLE AS SELECT (CTAS) für S3-Tabellen. Mit dieser Feature können Sie neue S3-Tabellen auf der Grundlage der Ergebnisse einer SELECT-Abfrage erstellen.
Bei der Erstellung einer CTAS-Abfrage für eine S3-Tabelle gibt es einige wichtige Unterschiede zu Standard-Athena-Tabellen:
-
Sie müssen die Speicherort-Eigenschaft weglassen, da S3-Tabellen ihre eigenen Speicherorte automatisch verwalten.
-
Die
table_type-Eigenschaft ist standardmäßig aufICEBERG, sodass Sie sie in Ihrer Abfrage nicht explizit angeben müssen. -
Wenn Sie kein Format angeben, verwendet das System automatisch
PARQUETals Standardformat für Ihre Daten. -
Alle anderen Eigenschaften folgen derselben Syntax wie normale Iceberg-Tabellen.
Bevor Sie S3-Tabellen mit CTAS erstellen, stellen Sie sicher, dass Sie die erforderlichen Berechtigungen in AWS Lake Formation konfiguriert haben. Insbesondere benötigen Sie Berechtigungen, um Tabellen im S3-Taballen-Katalog zu erstellen. Ohne diese Berechtigungen schlagen Ihre CTAS-Operationen fehl.
Anmerkung
Wenn Ihre CTAS-Abfrage fehlschlägt, müssen Sie möglicherweise Ihre Tabelle mithilfe der S3 Tabellen-API löschen, bevor Sie versuchen, Ihre Abfrage erneut auszuführen. Sie können die DROP TABLE-Athena-Anweisungen nicht verwenden, um die Tabelle zu entfernen, die teilweise durch die Abfrage erstellt wurde.
Beispiel
CREATE TABLE "s3tablescatalog/amzn-s3-demo-bucket"."namespace"."s3-table-name" WITH ( format = 'PARQUET' ) AS SELECT * FROMsource_table;