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.
Erste Schritte
In diesem Tutorial erfahren Sie, wie Sie Amazon Athena zum Abfragen von Daten verwenden. Sie werden eine Tabelle basierend auf Beispieldaten aus Amazon Simple Storage Service erstellen, die Tabelle abfragen und die Ergebnisse der Abfrage prüfen.
Für das Tutorial werden Live-Ressourcen verwendet, daher fallen für ausgeführte Abfragen Kosten an. Die Beispieldaten an dem in diesem Tutorial verwendeten Speicherort werden Ihnen nicht in Rechnung gestellt. Wenn Sie jedoch eigene Datendateien in Amazon S3 hochladen, fallen Gebühren an.
Voraussetzungen
-
Falls Sie das noch nicht getan haben, registrieren Sie sich für ein AWS-Konto.
-
Erstellen Sie unter Verwendung derselben AWS-Region (z. B. USA West (Oregon)) und des Kontos, das Sie für Athena verwenden, einen Bucket in Amazon S3, um Ihre Athena-Abfrageergebnisse zu speichern. Sie konfigurieren diesen Bucket als Speicherort für die Abfrageausgabe.
Schritt 1: Erstellen einer Datenbank
Zunächst müssen Sie eine Datenbank in Athena erstellen.
So erstellen Sie eine Athena-Datenbank
Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/
. -
Wenn Sie die Athena-Konsole in Ihrer aktuellen AWS-Region zum ersten Mal besuchen, wählen Sie Entdecken des Abfrage-Editors, um den Abfrage-Editor zu öffnen. Andernfalls wird Athena im Abfrage-Editor geöffnet.
-
Wählen Sie Edit Settings (Einstellungen bearbeiten), um einen Speicherort für Abfrageergebnisse in Amazon S3 einzurichten.
-
Führen Sie für Einstellungen verwalten einen der folgenden Schritte aus:
-
Geben Sie im Feld Speicherort der Abfrageergebnisse den Pfad zu dem Bucket ein, den Sie in Amazon S3 für Ihre Abfrageergebnisse erstellt haben. Stellen Sie dem Pfad einen Präfix mit
s3://
aus. -
Wählen Sie das Symbol S3 durchsuchen, wählen Sie den Amazon-S3-Bucket aus, den Sie in Ihrer aktuellen Region erstellt haben und wählen Sie dann Auswählen.
-
-
Wählen Sie Save (Speichern) aus.
-
Wählen Sie Editor, um zum Abfrage-Editor zu wechseln.
-
Auf der rechten Seite des Navigationsbereichs können Sie mit dem Athena-Abfrage-Editor Abfragen und Anweisungen eingeben und ausführen.
-
Um eine Datenbank mit dem Namen „
mydatabase
“ zu erstellen, geben Sie die folgende CREATE DATABASE-Anweisung ein.CREATE DATABASE mydatabase
-
Wählen Sie Run (Ausführen) oder drücken Sie
Ctrl+ENTER
. -
Wählen Sie aus der Database (Datenbank)-Liste auf der linken Seite
mydatabase
aus, um sie zu Ihrer aktuellen Datenbank zu machen.
Schritt 2: Erstellen einer Tabelle
Nachdem Sie nun eine Datenbank haben, können Sie eine Athena-Tabelle dafür erstellen. Die von Ihnen erstellte Tabelle basiert auf Amazon- CloudFront Protokolldaten am Speicherort s3://athena-examples-
, wobei myregion
/cloudfront/plaintext/myregion
Ihr aktueller istAWS-Region.
Die Beispielprotokolldaten liegen im Format von tabulatorgetrennten Werten (TSV) vor, was bedeutet, dass ein Tabulatorzeichen als Trennzeichen verwendet wird, um die Felder zu trennen. Die Daten sollten wie das folgende Beispiel aussehen. Zur besseren Lesbarkeit wurden die Tabulatoren im Auszug in Leerzeichen umgewandelt und das letzte Feld gekürzt.
2014-07-05 20:00:09 DFW3 4260 10.0.0.15 GET eabcd12345678.cloudfront.net /test-image-1.jpeg 200 - Mozilla/5.0[...]
2014-07-05 20:00:09 DFW3 4252 10.0.0.15 GET eabcd12345678.cloudfront.net /test-image-2.jpeg 200 - Mozilla/5.0[...]
2014-07-05 20:00:10 AMS1 4261 10.0.0.15 GET eabcd12345678.cloudfront.net /test-image-3.jpeg 200 - Mozilla/5.0[...]
Damit Athena diese Daten lesen kann, können Sie eine einfache CREATE EXTERNAL TABLE
Anweisung wie die folgende erstellen. Die Anweisung, mit der die Tabelle erstellt wird, definiert Spalten, die den Daten zugeordnet werden, legt fest, wie die Daten getrennt werden, und gibt den Amazon-S3-Speicherort an, an dem die Beispieldaten enthalten sind. Beachten Sie, dass die -LOCATION
Klausel einen Amazon S3-Ordnerspeicherort und keine bestimmte Datei angibt, da Athena erwartet, alle Dateien in einem Ordner zu scannen.
Verwenden Sie dieses Beispiel noch nicht, da es eine wichtige Einschränkung hat, die in Kürze erläutert wird.
CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_logs (
`Date` DATE,
Time STRING,
Location STRING,
Bytes INT,
RequestIP STRING,
Method STRING,
Host STRING,
Uri STRING,
Status INT,
Referrer STRING,
ClientInfo STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
LOCATION 's3://athena-examples-my-region
/cloudfront/plaintext/';
Im Beispiel wird eine Tabelle mit dem Namen cloudfront_logs
erstellt und für jedes Feld ein Name und ein Datentyp angegeben. Diese Felder werden zu den Spalten in der Tabelle. Da ein reserviertes Wort date
ist, wird es mit Backtick-Zeichen (`) maskiert. ROW FORMAT DELIMITED
bedeutet, dass Athena eine Standardbibliothek namens verwendet, LazySimpleSerDe um die eigentliche Arbeit des Parsens der Daten zu erledigen. Das Beispiel gibt auch an, dass die Felder durch Tabulatoren getrennt sind (FIELDS TERMINATED BY '\t'
) und dass jeder Datensatz in der Datei mit einem Zeilenumbruchzeichen (LINES TERMINATED BY '\n
) endet. Schließlich gibt die LOCATION
-Klausel den Pfad in Amazon S3 an, in dem sich die tatsächlich zu lesenden Daten befinden.
Wenn Sie über Ihre eigenen tabulator- oder kommagetrennten Daten verfügen, können Sie eine CREATE TABLE
Anweisung wie das soeben dargestellte Beispiel verwenden, sofern Ihre Felder keine verschachtelten Informationen enthalten. Wenn Sie jedoch eine Spalte wie haben, ClientInfo
die verschachtelte Informationen enthält, die ein anderes Trennzeichen verwenden, ist ein anderer Ansatz erforderlich.
Extrahieren von Daten aus dem ClientInfo Feld
Im Folgenden finden Sie ein vollständiges Beispiel für das letzte Feld ClientInfo
:
Mozilla/5.0%20(Android;%20U;%20Windows%20NT%205.1;%20en-US;%20rv:1.9.0.9)%20Gecko/2009040821%20IE/3.0.9
Wie Sie sehen können, ist dieses Feld mehrwertig. Da die gerade dargestellte CREATE TABLE
Beispielanweisung Registerkarten als Feldtrennzeichen angibt, können die einzelnen Komponenten innerhalb des ClientInfo
Felds nicht in separate Spalten aufgeteilt werden. Daher ist eine neue CREATE TABLE
Anweisung erforderlich.
Um Spalten aus den Werten innerhalb des ClientInfo
Felds zu erstellen, können Sie einen regulären AusdruckCREATE TABLE
-Anweisung zu verwenden, verwenden Sie eine Syntax wie die folgende. Diese Syntax weist Athena an, die Regex SerDe-Bibliothek und den von Ihnen angegebenen regulären Ausdruck zu verwenden.
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES ("input.regex" = "
regular_expression
")
Reguläre Ausdrücke können nützlich sein, um Tabellen aus komplexen CSV- oder TSV-Daten zu erstellen, können aber schwierig zu schreiben und zu warten sein. Glücklicherweise gibt es andere Bibliotheken, die Sie für Formate wie JSON, Parquet und ORC verwenden können. Weitere Informationen finden Sie unter Unterstützte SerDes- und Daten-Formate.
Jetzt können Sie die Tabelle im Athena-Abfrage-Editor erstellen. Die CREATE
TABLE
-Anweisung und Regex werden für Sie bereitgestellt.
So erstellen Sie eine Tabelle in Athena
-
Stellen Sie im Navigationsbereich für Database (Datenbank) sicher, dass
mydatabase
ausgewählt ist. -
Um mehr Platz im Abfrageeditor zu schaffen, können Sie das Pfeilsymbol auswählen, um den Navigationsbereich zu reduzieren.
-
Um eine Registerkarte für eine neue Abfrage zu erstellen, wählen Sie im Abfrageeditor das Pluszeichen (+). Sie können bis zu zehn Abfrageregisterkarten gleichzeitig öffnen.
-
Um eine oder mehrere Abfrage-Registerkarten zu schließen, wählen Sie den Pfeil neben dem Pluszeichen aus. Um alle Registerkarten gleichzeitig zu schließen, wählen Sie den Pfeil und wählen Sie dann Close all tabs (Schließen aller Tabs) aus.
-
Geben Sie im Abfragebereich die folgende
CREATE EXTERNAL TABLE
-Anweisung ein. Die Regex bricht die Informationen zu Betriebssystem, Browser und Browserversion aus demClientInfo
-Feld in den Protokolldaten aus.CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_logs ( `Date` DATE, Time STRING, Location STRING, Bytes INT, RequestIP STRING, Method STRING, Host STRING, Uri STRING, Status INT, Referrer STRING, os STRING, Browser STRING, BrowserVersion STRING ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES ( "input.regex" = "^(?!#)([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+[^\(]+[\(]([^\;]+).*\%20([^\/]+)[\/](.*)$" ) LOCATION 's3://athena-examples-
myregion
/cloudfront/plaintext/'; -
Ersetzen Sie in der
LOCATION
-Anweisungmyregion
durch die AWS-Region, die Sie zurzeit verwenden (z. B.us-west-1
). -
Wählen Sie Ausführen aus.
Die Tabelle „
cloudfront_logs
“ wird erstellt und unter der Liste Tables (Tabellen) für diemydatabase
-Datenbank angezeigt.
Schritt 3: Abfragen von Daten
Nachdem Sie nun die Tabelle cloudfront_logs
in Athena basierend auf den Daten in Amazon S3 erstellt haben, können Sie SQL-Abfragen für die Tabelle ausführen und die Ergebnisse in Athena aufrufen. Weitere Informationen zur Verwendung von SQL in Athena finden Sie unter SQL-Referenz für Athena.
Eine Abfrage ausführen
-
Wählen Sie das Pluszeichen (+), um eine neue Abfrageregisterkarte zu öffnen, und geben Sie die folgende SQL-Anweisung in den Abfragebereich ein.
SELECT os, COUNT(*) count FROM cloudfront_logs WHERE date BETWEEN date '2014-07-05' AND date '2014-08-05' GROUP BY os
-
Wählen Sie Ausführen aus.
Die Ergebnisse sehen wie folgt aus:
-
Um die Ergebnisse der Abfrage in einer
.csv
-Datei zu speichern, wählen Sie Ergebnisse herunterladen. -
Um vorherige Abfragen anzuzeigen oder auszuführen, wählen Sie die Registerkarte Kürzliche Abfragen.
-
Um die Ergebnisse einer vorherigen Abfrage von der Registerkarte Kürzliche Abfragen herunterzuladen, wählen Sie die Abfrage aus, und wählen Sie dann Ergebnisse herunterladen. Abfragen werden 45 Tage lang aufbewahrt.
-
Um eine oder mehrere neuere SQL-Abfragezeichenfolgen in eine CSV-Datei herunterzuladen, wählen Sie Download CSV (CSV herunterladen).
Weitere Informationen finden Sie unter Arbeiten mit Abfrageergebnissen, letzten Abfragen und Ausgabedateien.
Speichern Ihrer Abfragen
Sie können die von Ihnen erstellten oder bearbeiteten Abfragen im Abfrage-Editor unter einem Namen speichern. Athena speichert diese Abfragen auf der Registerkarte Saved queries (Gespeicherte Abfragen). Sie können die Registerkarte Saved queries (Gespeicherte Abfragen) zum Abrufen, Ausführen, Umbenennen oder Löschen Ihrer gespeicherten Abfragen verwenden. Weitere Informationen finden Sie unter Verwenden von gespeicherten Abfragen.
Tastenkombinationen und Type-Ahead-Vorschläge
Der Athena-Abfrageeditor bietet zahlreiche Tastenkombinationen für Aktionen wie das Ausführen einer Abfrage, das Formatieren einer Abfrage, Zeilenoperationen sowie Suchen und Ersetzen. Weitere Informationen und eine vollständige Liste der Tastenkombinationen finden Sie unter Verbessern der Produktivität durch die Verwendung von Tastenkombinationen im Amazon-Athena-Abfrageeditor
Der Athena-Abfrage-Editor unterstützt Typeahead-Code-Vorschläge für eine schnellere Abfrageerstellung. Um Sie beim Schreiben von SQL-Abfragen mit verbesserter Genauigkeit und höherer Effizienz zu unterstützen, bietet er die folgenden Features:
-
Während der Eingabe werden in Echtzeit Vorschläge für Schlüsselwörter, lokale Variablen, Codefragmente und Katalogelemente angezeigt.
-
Wenn Sie einen Datenbank- oder Tabellennamen gefolgt von einem Punkt eingeben, zeigt der Editor komfortabel eine Liste von Tabellen oder Spalten an, aus denen Sie wählen können.
-
Wenn Sie den Mauszeiger über einen Codefragmentvorschlag bewegen, wird in einer Zusammenfassung ein kurzer Überblick über die Syntax und Verwendung des Codefragments angezeigt.
-
Um die Lesbarkeit des Codes zu verbessern, wurden auch die Keywords und ihre Hervorhebungsregeln aktualisiert, sodass sie der neuesten Syntax von Trino und Hive entsprechen.
Dieses Feature ist standardmäßig aktiviert. Um das Feature zu aktivieren oder zu deaktivieren, verwenden Sie die Code-Editor-Einstellungen (Zahnradsymbol) unten rechts im Abfrage-Editor-Fenster.
Herstellen einer Verbindung mit anderen Datenquellen
In diesem Tutorial wurde eine Datenquelle in Amazon S3 im CSV-Format verwendet. Weitere Informationen zur Verwendung von Athena mit der AWS Glue finden Sie unter Verwenden von AWS Glue zum Herstellen einer Verbindung mit Datenquellen in Amazon S3. Sie können eine Verbindung zwischen Athena und einer Vielzahl von Datenquellen herstellen, indem Sie, ODBC- und JDBC-Treiber, externe Hive-Metastores und Athena-Datenquellen-Connectors verwenden. Weitere Informationen finden Sie unter Herstellen von Verbindungen mit Datenquellen.