Mise en route - Amazon Athena

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Mise en route

Ce tutoriel vous guide dans l'utilisation d'Amazon Athena pour l'interrogation de données. Vous allez créer une table basée sur des exemples de données stockées dans Amazon Simple Storage Service, interroger la table et vérifier les résultats de la requête.

Le tutoriel utilise des ressources en temps réel. Les requêtes que vous exécutez vous sont donc facturées. Vous ne payez pas pour l'échantillon de données dans l'emplacement que ce tutoriel utilise, mais si vous téléchargez vos propres fichiers de données sur Simple Storage Service (Amazon S3), des frais s'appliquent.

Prérequis

Étape 1 : Créer une base de données

Vous devez d'abord créer une base de données dans Athena.

Pour créer une base de données Athena
  1. Ouvrez la console Athena à l’adresse https://console.aws.amazon.com/athena/.

  2. S'il s'agit de votre première visite sur la console Athena dans votre Région AWS actuelle, choisissez Explore the query editor (Découvrir l'éditeur de requêtes) pour ouvrir l'éditeur de requêtes. Sinon, Athena s'ouvre dans l'éditeur de requêtes.

  3. Choisissez Modifier les paramètres pour configurer l'emplacement des résultats de la requête dans Amazon S3.

    
                        Choisissez Modifier les paramètres.
  4. Pour Gestion des paramètres, procédez de l'une des manières suivantes :

    • Dans la zone de texte Location of query result (Emplacement des résultats de la requête), saisissez le chemin d'accès au compartiment que vous avez créé dans Simple Storage Service (Amazon S3) pour les résultats de votre requête. Préfixez le chemin avec s3://.

    • Choisissez Parcourir S3, choisissez le compartiment Simple Storage Service (Amazon S3) que vous avez créé pour votre région actuelle, puis sélectionnez Choisir.

    
                        Spécifiez un emplacement dans Simple Storage Service (Amazon S3) pour recevoir les résultats des requêtes d'Athena.
  5. Choisissez Enregistrer.

  6. Choisissez Editor (Éditeur) pour passer à l'éditeur de requête.

    
                        Choisissez Editor (Éditeur).
  7. À droite du panneau de navigation, vous pouvez utiliser l'éditeur de requête Athena pour saisir et exécuter des requêtes et des instructions.

    
                        L'éditeur de requêtes dans la console Athena.
  8. Pour créer une base de données nommée mydatabase, saisissez l'instruction CREATE DATABASE suivante.

    CREATE DATABASE mydatabase
  9. Choisissez Run (Exécuter) ou appuyez sur Ctrl+ENTER.

  10. Dans la liste des Database (Base de données) à gauche, choisissez mydatabase pour en faire votre base de données actuelle.

    
                        Choisissez la base de données que vous avez créée.

Étape 2 : créer une table

Maintenant que vous avez une base de données, vous pouvez créer une table Athena pour celle-ci. Le tableau que vous créez sera basé sur des exemples de données de CloudFront journal Amazon dans l'emplacement s3://athena-examples-myregion/cloudfront/plaintext/myregion est votre emplacement actuel Région AWS.

Les données de l'exemple de journal sont au format TSV (valeurs séparées par des tabulations), ce qui signifie qu'un caractère de tabulation est utilisé comme délimiteur pour séparer les champs. Les données ressemblent à l'exemple suivant. Pour plus de lisibilité, les onglets de l'extrait ont été convertis en espaces et le champ final a été raccourci.

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[...]

Pour permettre à Athéna de lire ces données, vous pouvez créer une CREATE EXTERNAL TABLE déclaration simple comme celle-ci. L'instruction qui crée la table définit les colonnes qui correspondent aux données, spécifie comment les données sont délimitées et spécifie l'emplacement Simple Storage Service (Amazon S3) qui contient les exemples de données. Notez qu'Athena prévoit d'analyser tous les fichiers d'un dossier, la LOCATION clause indique l'emplacement du dossier Amazon S3, et non un fichier spécifique.

N'utilisez pas cet exemple pour l'instant car il comporte une limitation importante qui sera expliquée sous peu.

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/';

L'exemple crée une table appelée cloudfront_logs et spécifie un nom et un type de données pour chaque champ. Ces champs deviennent les colonnes de la table. Comme il date s'agit d'un mot réservé, il est masqué par des caractères backtick (`). ROW FORMAT DELIMITEDsignifie qu'Athena utilisera une bibliothèque par défaut appelée LazySimpleSerDepour effectuer le travail réel d'analyse des données. L'exemple spécifie également que les champs sont séparés par des tabulations (FIELDS TERMINATED BY '\t') et que chaque registre dans le fichier se termine par un saut de ligne (LINES TERMINATED BY '\n). Enfin, la clause LOCATION indique le chemin d'accès dans Simple Storage Service (Amazon S3) où se trouvent les données à lire.

Si vous avez vos propres données séparées par des tabulations ou des virgules, vous pouvez utiliser une CREATE TABLE déclaration comme dans l'exemple qui vient d'être présenté, à condition que vos champs ne contiennent pas d'informations imbriquées. Toutefois, si une colonne de ClientInfo ce type contient des informations imbriquées qui utilisent un séparateur différent, une approche différente est requise.

Extraction de données depuis le terrain ClientInfo

En regardant les exemples de données, voici un exemple complet du champ final ClientInfo :

Mozilla/5.0%20(Android;%20U;%20Windows%20NT%205.1;%20en-US;%20rv:1.9.0.9)%20Gecko/2009040821%20IE/3.0.9

Comme vous pouvez le voir, ce champ est à valeurs multiples. Comme l'exemple d'CREATE TABLEinstruction qui vient d'être présenté spécifie les onglets comme délimiteurs de champs, il ne peut pas diviser les différents composants du ClientInfo champ en colonnes distinctes. Une nouvelle CREATE TABLE déclaration est donc requise.

Pour créer des colonnes à partir des valeurs contenues dans le ClientInfo champ, vous pouvez utiliser une expression régulière (regex) contenant des groupes d'expressions régulières. Les groupes de regex que vous spécifiez deviennent des colonnes de table distinctes. Pour utiliser une regex dans votre instruction CREATE TABLE, utilisez une syntaxe comme la suivante. Cette syntaxe indique à Athena d'utiliser la bibliothèque Régex SerDe et l'expression rationnelle que vous spécifiez.

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES ("input.regex" = "regular_expression")

Les expressions rationnelles peuvent être utiles pour créer des tables à partir de données CSV ou TSV complexes, mais elles peuvent être difficiles à écrire et à gérer. Heureusement, il existe d'autres bibliothèques que vous pouvez utiliser pour des formats tels que JSON, Parquet et ORC. Pour plus d’informations, consultez SerDe et formats de données pris en charge.

Vous êtes maintenant prêt à créer la table dans l'éditeur de requête Athena. L'instruction CREATE TABLE et la regex sont fournies pour vous.

Pour créer une table dans Athena
  1. Dans le panneau de navigation, pour Database (Base de données), assurez-vous que mydatabase est sélectionnée.

  2. Pour vous donner plus d'espace dans l'éditeur de requêtes, vous pouvez choisir l'icône de flèche pour réduire le panneau de navigation.

    
                        Choisissez la flèche pour réduire le panneau de navigation.
  3. Pour créer un onglet pour une nouvelle requète, choisissez le signe plus (+) dans l'éditeur de requête. Vous pouvez ouvrir jusqu'à dix onglets de requête à la fois.

    
                        Sélection de l'icône plus pour créer une nouvelle requête.
  4. Pour fermer un ou plusieurs onglets de requête, choisissez la flèche à côté du signe plus. Pour fermer tous les onglets en même temps, choisissez la flèche, puis choisissez Close all tabs (Fermer tous les onglets).

    
                        Choisissez l'icône en forme de flèche pour fermer un ou plusieurs onglets de requête.
  5. Dans le volet de requête, saisissez l'instruction CREATE EXTERNAL TABLE suivante. La regex extrait les informations relatives au système d'exploitation, au navigateur et à la version du navigateur du champ ClientInfo des données du journal.

    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. Dans l'LOCATIONinstruction, remplacez myregion par celle Région AWS que vous utilisez actuellement (par exemple,us-west-1).

  7. Cliquez sur Run (Exécuter).

    La table cloudfront_logs est créée et apparaît sous la liste Tables pour la base de données mydatabase.

Étape 3 : Interrogation des données

Maintenant que la table cloudfront_logs a été créée dans Athena à partir des données de Simple Storage Service (Amazon S3), vous pouvez exécuter des requêtes SQL sur la table et en voir les résultats dans Athena. Pour plus d'informations sur l'utilisation de SQL dans Athena, voir Référence SQL pour Athena.

Pour exécuter une requête
  1. Choisissez le signe plus (+) pour ouvrir un nouvel onglet de requête et saisissez l'instruction SQL suivante dans le volet de requête.

    SELECT os, COUNT(*) count FROM cloudfront_logs WHERE date BETWEEN date '2014-07-05' AND date '2014-08-05' GROUP BY os
  2. Cliquez sur Run (Exécuter).

    Les résultats se présentent comme suit :

    
                        Affichage des résultats de la requête dans la console Athena.
  3. Pour enregistrer les résultats de la requête dans un fichier .csv, choisissez Download results (Télécharger les résultats).

    
                        Téléchargement des résultats de la requête au format CSV.
  4. Pour afficher ou exécuter des requêtes précédentes, choisissez l'onglet Recent queries (Requêtes récentes).

    
                        Choisissez l'onglet Recent queries (Requêtes récentes) pour afficher les requêtes précédentes.
  5. Pour télécharger les résultats d'une requête précédente depuis l'onglet Recent queries (Requêtes récentes), sélectionnez la requête, puis choisissez Download results (Télécharger les résultats). Les requêtes sont conservées pendant 45 jours.

    
                        Affichage et téléchargement de requêtes récentes dans la console Athena.
  6. Pour télécharger une ou plusieurs chaînes de requêtes SQL récentes dans un fichier CSV, choisissez Download CSV (Télécharger CSV).

    
                        Téléchargement de chaînes de requêtes récentes dans un fichier CSV.

    Pour plus d’informations, consultez Utilisation des résultats des requêtes, des requêtes récentes et des fichiers de sortie.

Enregistrement de vos requêtes

Vous pouvez enregistrer les requêtes que vous créez ou modifier dans l'éditeur de requêtes avec un nom. Athena stocke ces requêtes sur l'onglet Saved queries (Requêtes enregistrées). Vous pouvez utiliser l'onglet Saved queries (Requêtes enregistrées) pour rappeler, exécuter, renommer ou supprimer vos requêtes enregistrées. Pour plus d’informations, consultez Utilisation de requêtes enregistrées.

Raccourcis clavier et suggestions de saisie anticipée

L'éditeur de requêtes Athena fournit de nombreux raccourcis clavier pour des actions telles que l'exécution d'une requête, le formatage d'une requête, les opérations de ligne ainsi que la recherche et le remplacement. Pour plus d'informations et une liste complète des raccourcis, consultez Améliorer la productivité en utilisant les raccourcis clavier dans l'éditeur de requêtes Amazon Athena sur le blog AWS Big Data.

L'éditeur de requêtes Athena prend en charge les suggestions de code de saisie anticipée pour une expérience de création de requêtes plus rapide. Pour vous aider à écrire des requêtes SQL avec une précision et une efficacité accrues, il propose les fonctionnalités suivantes :

  • Au fur et à mesure que vous tapez, des suggestions apparaissent en temps réel pour les mots-clés, les variables locales, les extraits et les éléments du catalogue.

  • Lorsque vous tapez le nom d'une base de données ou d'une table suivi d'un point, l'éditeur affiche facilement une liste de tables ou de colonnes parmi lesquelles choisir.

  • Lorsque vous passez le pointeur sur une suggestion d'extrait, un résumé présente un bref aperçu de la syntaxe et de l'utilisation de l'extrait.

  • Pour améliorer la lisibilité du code, les mots-clés et leurs règles de mise en surbrillance ont également été mis à jour pour s'aligner sur la dernière syntaxe de Trino et Hive.

Cette caractéristique est activée par défaut. Pour activer ou désactiver cette fonctionnalité, utilisez les préférences de l'éditeur de code (icône en forme de roue dentée) en bas à droite de la fenêtre de l'éditeur de requêtes.

Connexion à d'autres sources de données

Ce tutoriel a utilisé une source de données dans Simple Storage Service (Amazon S3) au format CSV. Pour plus d'informations sur l'utilisation d'Athena avec AWS Glue, consultez. Utilisation AWS Glue pour se connecter à des sources de données dans Amazon S3 Vous pouvez également connecter Athena à diverses sources de données en utilisant des pilotes ODBC et JDBC, des métastores Hive externes et des connecteurs de sources de données Athena. Pour plus d'informations, voir Connexion aux sources de données.