Erstellen von Tabellen in Athena
Um Tabellen zu erstellen, können Sie DDL-Anweisungen in der Athena-Konsole ausführen, das Athena-Formular Tabelle erstellen verwenden oder einen JDBC- oder ODBC-Treiber verwenden. Athena definiert mithilfe von Apache Hive Tabellen und erstellt Datenbanken, die an sich ein logischer Namespace von Tabellen sind. Athena unterstützt eine Vielzahl von Serializer-Deserializer-Bibliotheken (SerDe) zum Erstellen von Tabellen für bestimmte Datenformate. Eine Liste der unterstützten SerDe-Bibliotheken finden Sie unter Einen SerDe für Ihre Daten wählen.
Wenn Sie eine Datenbank und Tabelle in Athena erstellen, beschreiben Sie einfach das Schema und den Speicherort, an dem die Tabellendaten in Amazon S3 für Abfragen beim Lesen gespeichert sind. Athena bearbeitet Ihre Daten in Amazon S3 nicht. Die Begriffe Datenbank und Tabelle haben daher eine etwas abweichende Bedeutung als in traditionellen relationalen Datenbanksystemen, da die Daten nicht zusammen mit der Schemadefinition für die Datenbank und Tabelle gespeichert werden.
Athena speichert das Schema in AWS Glue Data Catalog und verwendet es, um die Daten zu lesen, wenn Sie die Tabelle mit SQL abfragen. Dieser Ansatz Schema-on-Read, bei dem beim Ausführen einer Abfrage ein Schema auf Ihre Daten projiziert wird, macht das Laden oder Transformieren von Daten überflüssig.
Überlegungen und Einschränkungen
Im Folgenden finden Sie einige wichtige Einschränkungen und Überlegungen für Tabellen in Athena.
Überlegungen hinsichtlich Amazon S3
Beim Erstellen einer Tabelle geben Sie einen Amazon-S3-Bucket-Speicherort für die zugrunde liegenden Daten mit der Klausel LOCATION an. Berücksichtigen Sie dabei Folgendes:
-
Athena kann nur die neueste Version der Daten in einem versionierten Amazon-S3-Bucket und keine vorherigen Versionen der Daten abfragen.
-
Sie müssen über Berechtigungen zum Arbeiten mit Daten am Amazon-S3-Speicherort verfügen. Weitere Informationen finden Sie unter Zugriff auf Amazon S3 von Athena kontrollieren.
-
Athena unterstützt das Abfragen von Objekten, die mit verschiedenen Speicherklassen im gleichen von der
LOCATION-Klausel angegebenen Bucket gespeichert werden. Beispielsweise können Sie Daten in Objekten abfragen, die in verschiedenen Speicherklassen in Amazon S3 gespeichert sind (Standard, Standard IA und Intelligent-Tiering). -
Athena unterstützt Buckets mit Zahlung durch den Anforderer. Weitere Informationen zum Aktivieren der Zahlung durch den Anforderer für Buckets mit Quelldaten, die Sie in Athena abfragen möchten, finden Sie unter Erstellen von Arbeitsgruppen.
-
Sie können Athena verwenden, um wiederhergestellte Objekte aus den Amazon-S3-Speicherklassen Amazon Glacier Flexible Retrieval (früher Glacier) und Amazon Glacier Deep Archive abzufragen, Sie müssen diese Funktion jedoch für jede Tabelle einzeln aktivieren. Wenn Sie das Feature nicht für eine Tabelle aktivieren, bevor Sie eine Abfrage ausführen, überspringt Athena während der Abfrageausführung alle Objekte der Tabelle von Amazon Glacier Flexible Retrieval und Amazon Glacier Deep Archive. Weitere Informationen finden Sie unter Wiederhergestellte Amazon-Glacier-Objekte abfragen.
Weitere Informationen finden Sie unter Speicherklassen, Ändern der Speicherklasse eines Objekts in Amazon S3, Übergang in die Speicherklasse GLACIER (Objektarchivierung) und Buckets mit Zahlung durch den Anforderer im Benutzerhandbuch für Amazon Simple Storage Service.
-
Wenn Sie Abfragen gegen Amazon-S3-Buckets mit einer großen Anzahl von Objekten ausgeben und die Daten nicht partitioniert sind, können sich solche Abfragen auf die Grenzwerte für die Get-Anforderungsrate in Amazon S3 auswirken und zu Amazon-S3-Ausnahmen führen. Um Fehler zu vermeiden, partitionieren Sie Ihre Daten. Überlegen Sie zusätzlich, ob Sie Ihre Amazon-S3-Anforderungsraten optimieren möchten. Weitere Informationen finden Sie unter Anfragerate und Leistungsaspekte.
Weitere Informationen zur Angabe eines Speicherorts für Ihre Daten in Amazon S3 finden Sie unter Tabellenspeicherort in Amazon S3 angeben.
Weitere Überlegungen
-
Transaktionsdatenumwandlungen werden nicht unterstützt – Athena bietet keine Unterstützung für transaktionsbasierte Vorgänge (wie in Hive oder Presto) für Tabellendaten. Eine vollständige Liste der nicht unterstützten Schlüsselwörter finden Sie unter Nicht unterstützte DDLs.
-
Operationen auf Tabellen sind ACID – Die Vorgänge zum Erstellen, Aktualisieren und Löschen von Tabellen sind garantiert ACID-kompatibel. Wenn beispielsweise mehrere Benutzer oder Clients gleichzeitig versuchen, eine vorhandene Tabelle zu erstellen oder zu bearbeiten, ist nur einer erfolgreich.
-
Tabellen sind EXTERNAL – Verwenden Sie außer beim Erstellen von Iceberg-Tabellen immer das
EXTERNAL-Schlüsselwort. Wenn SieCREATE TABLEohne dasEXTERNAL-Schlüsselwort für Nicht-Iceberg-Tabellen verwenden, gibt Athena einen Fehler aus. Wenn Sie eine Tabelle in Athena löschen, werden nur die Tabellenmetadaten gelöscht. Die Daten verbleiben in Amazon S3. -
Maximale Länge der Abfragezeichenfolge – Die maximale Länge der Abfragezeichenfolge beträgt 256 KB.
Wenn Sie den API-Vorgang AWS Glue CreateTable oder die Vorlage CloudFormation
AWS::Glue::Tableverwenden, um eine Tabelle zur Verwendung in Athena zu erstellen, ohne dieTableType-Eigenschaft anzugeben und dann eine DDL-Abfrage wieSHOW CREATE TABLEoderMSCK REPAIR TABLEausführen, können Sie die FehlermeldungFEHLGESCHLAGEN: NullPointerException-Name is nullanzeigen.Um den Fehler zu beheben, geben Sie einen Wert für das TableInput
TableType-Attribut als Teil des AWS Glue-API-AufrufsCreateTableoder der z-CloudFormation Vorlage an. Mögliche Werte fürTableTypesindEXTERNAL_TABLEoderVIRTUAL_VIEW.Diese Anforderung gilt nur, wenn Sie eine Tabelle mit dem AWS Glue-API-Vorgang
CreateTableoder derAWS::Glue::Table-Vorlage erstellen. Wenn Sie eine Tabelle für Athena mithilfe einer DDL-Anweisung oder eines AWS Glue-Crawlers erstellen, wird dieTableType-Eigenschaft automatisch für Sie definiert.