Création de tables dans Athena - 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.

Création de tables dans Athena

Vous pouvez exécuter des déclarations DDL dans la console Athena à l'aide d'un pilote JDBC ou ODBC ou à l'aide du formulaire Create table (Créer une table) d'Athena.

Lorsque vous créez un schéma de table dans Athena, Athena le stocke dans un catalogue de données et l'utilise lorsque vous exécutez des requêtes.

Athena utilise une approche appelée schema-on-read (schéma lors de la lecture) qui signifie que le schéma est projeté sur les données lorsque vous exécutez une requête. Cela élimine la nécessité de charger ou transformer des données.

Athena ne modifie pas vos données dans Simple Storage Service (Amazon S3).

Athena utilise Apache Hive pour définir des tables et créer des bases de données, qui sont essentiellement des espaces de noms logiques de tables.

Lorsque vous créez une table de base de données dans Athena, vous décrivez simplement le schéma et l'emplacement où les données de table sont situées dans Simple Storage Service (Amazon S3) pour l'interrogation au moment de la lecture. Les notions de base de données et de table ont donc une signification légèrement différente par rapport aux systèmes de base de données relationnelle classiques, car les données ne sont pas stockées avec la définition de schéma pour la base de données et la table.

Lorsque vous effectuez une requête, vous interrogez la table à l'aide du code SQL standard et les données sont lues à ce moment. Vous trouverez des conseils pour créer des bases de données et des tables dans la documentation Apache Hive, mais les conseils suivants s'appliquent spécifiquement à Athena.

La longueur de chaîne de requête maximum est de 256 ko.

Hive prend en charge plusieurs formats de données via l'utilisation de bibliothèques de SerDe (Sérialiseur-Désérialiseur). Vous pouvez également définir des schémas complexes à l'aide d'expressions régulières. Pour obtenir la liste des bibliothèques SerDe prises en charge, veuillez consulter SerDe et formats de données pris en charge.

Considérations et restrictions

Voici quelques limitations et aspects importants à prendre en compte pour les tables dans Athena.

Exigences pour les tables dans Athena et les données dans Simple Storage Service (Amazon S3)

Lorsque vous créez une table, vous spécifiez un emplacement de compartiment Simple Storage Service (Amazon S3) pour les données sous-jacentes à l'aide de la clause LOCATION. Éléments à prendre en compte :

  • Athena peut uniquement interroger la dernière version des données sur un compartiment Simple Storage Service (Amazon S3) versionné, et ne peut pas interroger les versions précédentes des données.

  • Vous devez disposer des autorisations appropriées pour utiliser des données dans l'emplacement Simple Storage Service (Amazon S3). Pour de plus amples informations, veuillez consulter Accès à Amazon S3.

  • Athena prend en charge l'interrogation des objets stockés avec plusieurs classes de stockage dans le même compartiment spécifié par la clause LOCATION. Par exemple, vous pouvez interroger des données dans les objets stockés dans différentes classes de stockage (Standard, Standard – Accès peu fréquent et Hiérarchisation intelligente) dans Simple Storage Service (Amazon S3).

  • Athena prend en charge les compartiments de type Paiement par le demandeur. Pour savoir comment activer « Requester Pays » pour les compartiments contenant les données source que vous souhaitez interroger dans Athena, consultez Créer un groupe de travail.

  • Athena ne prend pas en charge l'interrogation des données dans les classes de stockage S3 Glacier Flexible Retrieval ou S3 Glacier Deep Archive. Les objets dans les classes de stockage S3 Glacier Flexible Retrieval et S3 Glacier Deep Archive sont ignorés. Vous pouvez également utiliser la classe de stockage Simple Storage Service (Amazon S3) Glacier Instant Retrieval, qui peut être interrogée par Athena. Pour de plus amples informations, consultez classe de stockage Simple Storage Service (Amazon S3) Glacier instant retrieval.

    Pour plus d'informations sur les classes de stockage, reportez-vous aux rubriques Classes de stockage, Modification de la classe de stockage d'un objet dans Amazon S3, Transition vers la classe de stockage GLACIER (archivage d'objets) et Compartiments de type paiement par le demandeur du Guide de l'utilisateur Amazon Simple Storage Service.

  • Si vous exécutez des requêtes sur les compartiments Simple Storage Service (Amazon S3) avec un grand nombre d'objets et que les données ne sont pas partitionnées, de telles requêtes peuvent affecter les limites de débit de demande Get dans Simple Storage Service (Amazon S3) et conduire à des exceptions Simple Storage Service (Amazon S3). Pour éviter des erreurs, partitionnez vos données. En outre, envisagez de régler vos taux de demande Simple Storage Service (Amazon S3). Pour plus d'informations, consultez Considérations en matière de débit de demandes et de performances.

  • Si vous utilisez l'opération API AWS Glue CreateTable (Créer une table) ou le modèle AWS CloudFormation AWS::Glue::Table pour créer une table à utiliser dans Athena sans spécifier la propriété TableType, puis exécutez une requête DDL comme SHOW CREATE TABLE ou MSCK REPAIR TABLE, il est possible que vous receviez le message d'erreur FAILED: NullPointerException Name is null (ÉCHEC : NullPointerException, nom nul).

    Pour résoudre cette erreur, spécifiez une valeur pour l'attribut TableInput TableType dans le cadre de l'appel d'API AWS Glue CreateTable ou du modèle AWS CloudFormation. Parmi les valeurs possibles pour TableType figurent EXTERNAL_TABLE ou VIRTUAL_VIEW.

    Cette exigence s'applique uniquement lorsque vous créez un tableau à l'aide de l'opération API AWS Glue CreateTable ou du modèle AWS::Glue::Table. Si vous créez une table pour Athena en utilisant à l'aide d'une instruction DDL ou d'un crawler AWS Glue, la propriété TableType est définie pour vous automatiquement.

Fonctions prises en charge

Les fonctions prises en charge dans les requêtes Athena correspondent à celles de Trino et Presto. Pour plus d’informations sur les fonctions individuelles, veuillez consulter la section Fonctions et opérateurs de chaîne dans la documentation Trino ou Presto.

Les transformations de données transactionnelles ne sont pas prises en charge

Athena ne prend pas en charge les opérations basées sur les transactions (comme celles figurant dans Hive ou Presto) sur des données de table. Pour obtenir la liste complète des mots-clés non pris en charge, consultez DDL non pris en charge.

Les opérations qui modifient les états de table sont conformes à ACID

Lorsque vous créez, mettez à jour ou supprimez des tables, ces opérations sont garanties comme étant conformes à ACID. Par exemple, si plusieurs utilisateurs ou clients tentent de créer ou de modifier une table existante en même temps, un seule opération aboutira.

Les tables sont EXTERNAL

Sauf lors de la création de tables Iceberg, utilisez toujours le mot-clé EXTERNAL. Si vous utilisez CREATE TABLE sans le mot clé EXTERNAL pour des tables non Iceberg, Athena émet une erreur. Lorsque vous supprimez une table dans Athena, seules les métadonnées de la table sont supprimées ; les données sont conservées dans Simple Storage Service (Amazon S3).

Création de tables à l'aide de AWS Glue ou de la console Athena

Vous pouvez créer des tables dans Athena à l'aide de AWS Glue, du formulaire d'ajout de table ou en exécutant une instruction DDL dans l'éditeur de requêtes Athena.

Création d'une table à l'aide du Crawler AWS Glue

  1. Ouvrez la console Athena à l'adresse https://console.aws.amazon.com/athena/.

  2. Dans l'éditeur de requêtes, à côté de Tables and views (Tables et vues), choisissez Create (Créer) puis choisissez le Crawler AWS Glue.

  3. Suivez les étapes sur la page Add crawler (Ajouter un Crawler) de la console AWS Glue pour ajouter un Crawler.

    Pour de plus amples informations, veuillez consulter Utiliser des AWS Glue crawlers.

Création d'une table à l'aide du formulaire de création de table Athena

  1. Ouvrez la console Athena à l'adresse https://console.aws.amazon.com/athena/.

  2. Dans l'éditeur de requêtes, à côté de Tables and views (Tables et vues), choisissez Create (Créer) puis choisissez S3 bucket data (Données de compartiment S3).

  3. Dans le formulaire Create Table From S3 bucket data (Créer une table à partir des données du compartiment S3), saisissez les informations pour créer votre table, puis choisissez Create table (Créer une table). Pour plus d'informations sur les champs du formulaire, consultez Ajout d'une table à l'aide d'un formulaire.

Pour créer une table à l'aide de Hive DDL

  1. Dans le menu Database (Base de données), choisissez la base de données pour laquelle vous souhaitez créer une table. Si vous ne spécifiez pas de base de données dans votre instruction CREATE TABLE, la table est créée dans la base de données actuellement sélectionnée dans l'éditeur de requêtes.

  2. Saisissez une instruction comme celle qui suit dans l'éditeur de requêtes, puis choisissez Run (Exécuter), ou appuyez sur Ctrl+ENTER.

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

Affichage des informations sur la table

Une fois que vous avez créé une table dans Athena, son nom s'affiche dans la liste Tables située sur la gauche. Choisissez les trois points verticaux à côté du nom de la table dans la console Athena pour afficher des informations sur la table et la gérer.

  • Prévisualisation de la table – Affiche les 10 premières lignes de toutes les colonnes en exécutant l'instruction SELECT * FROM "database_name"."table_name" LIMIT 10 dans l'éditeur de requêtes Athena.

  • Génération du DDL de la table – Génère une instruction DDL que vous pouvez utiliser pour recréer la table en exécutant l'instruction SHOW CREATE TABLE table_name dans l'éditeur de requête Athena.

  • Chargement de partitions – Exécute l'instruction MSCK REPAIR TABLE table_name dans l'éditeur de requêtes Athena. Cette option est disponible uniquement si la table comporte des partitions.

  • Insert into editor (Insérer dans l'éditeur) – Insère le nom de la table dans l'éditeur de requêtes à l'emplacement de modification actuel.

  • Suppression de table – Affiche une boîte de dialogue de confirmation vous demandant si vous souhaitez supprimer la table. Si vous êtes d'accord, cette option permet d'exécuter l'instruction DROP TABLE table_name dans l'éditeur de requêtes d'Athena.

  • Propriétés de la table – Indique le nom de la table, le nom de la base de données, l'heure de création et si la table contient des données chiffrées.