Erste Schritte - 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.

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
  1. Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/.

  2. 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.

  3. Wählen Sie Edit Settings (Einstellungen bearbeiten), um einen Speicherort für Abfrageergebnisse in Amazon S3 einzurichten.

    
                        Wählen Sie Einstellungen ändern aus.
  4. 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.

    
                        Geben Sie einen Speicherort in Amazon S3 an, an dem Abfrageergebnisse von Athena empfangen werden sollen.
  5. Wählen Sie Save (Speichern) aus.

  6. Wählen Sie Editor, um zum Abfrage-Editor zu wechseln.

    
                        Wählen Sie Editor aus.
  7. Auf der rechten Seite des Navigationsbereichs können Sie mit dem Athena-Abfrage-Editor Abfragen und Anweisungen eingeben und ausführen.

    
                        Der Abfrageeditor in der Athena-Konsole.
  8. Um eine Datenbank mit dem Namen „mydatabase“ zu erstellen, geben Sie die folgende CREATE DATABASE-Anweisung ein.

    CREATE DATABASE mydatabase
  9. Wählen Sie Run (Ausführen) oder drücken Sie Ctrl+ENTER.

  10. Wählen Sie aus der Database (Datenbank)-Liste auf der linken Seite mydatabase aus, um sie zu Ihrer aktuellen Datenbank zu machen.

    
                        Wählen Sie die Datenbank aus, die Sie erstellt haben.

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-myregion/cloudfront/plaintext/, wobei 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 -LOCATIONKlausel 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 Ausdruck (Regex) verwenden, der Regex-Gruppen enthält. Die von Ihnen angegebenen Regex-Gruppen werden zu separaten Tabellenspalten. Um eine Regex in Ihrer CREATE 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
  1. Stellen Sie im Navigationsbereich für Database (Datenbank) sicher, dass mydatabase ausgewählt ist.

  2. Um mehr Platz im Abfrageeditor zu schaffen, können Sie das Pfeilsymbol auswählen, um den Navigationsbereich zu reduzieren.

    
                        Wählen Sie den Pfeil aus, um den Navigationsbereich auszublenden.
  3. 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.

    
                        Wählen Sie das Plus-Symbol aus, um eine neue Abfrage zu erstellen.
  4. 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.

    
                        Wählen Sie das Pfeilsymbol, um eine oder mehrere Abfrage-Registerkarten zu schließen.
  5. Geben Sie im Abfragebereich die folgende CREATE EXTERNAL TABLE-Anweisung ein. Die Regex bricht die Informationen zu Betriebssystem, Browser und Browserversion aus dem ClientInfo-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/';
  6. Ersetzen Sie in der LOCATION-Anweisung myregion durch die AWS-Region, die Sie zurzeit verwenden (z. B. us-west-1).

  7. Wählen Sie Ausführen aus.

    Die Tabelle „cloudfront_logs“ wird erstellt und unter der Liste Tables (Tabellen) für die mydatabase-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
  1. 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
  2. Wählen Sie Ausführen aus.

    Die Ergebnisse sehen wie folgt aus:

    
                        Anzeigen von Abfrageergebnissen in der Athena-Konsole.
  3. Um die Ergebnisse der Abfrage in einer .csv-Datei zu speichern, wählen Sie Ergebnisse herunterladen.

    
                        Herunterladen von Abfrageergebnisse im CSV-Format.
  4. Um vorherige Abfragen anzuzeigen oder auszuführen, wählen Sie die Registerkarte Kürzliche Abfragen.

    
                        Wählen Sie Recent queries (Kürzliche Abfragen), um vorherige Abfragen anzuzeigen.
  5. 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.

    
                        Anzeigen und Herunterladen der letzten Abfragen in der Athena-Konsole.
  6. Um eine oder mehrere neuere SQL-Abfragezeichenfolgen in eine CSV-Datei herunterzuladen, wählen Sie Download CSV (CSV herunterladen).

    
                        Herunterladen der letzten Abfragezeichenfolgen in eine CSV-Datei.

    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 im AWS-Big-Data-Blog.

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.