Enregistrement de catalogues de compartiment de table S3 et interrogation de tables à partir d’Athena
Les compartiments de table Amazon S3 sont un type de compartiment d’Amazon S3 spécialement conçu pour stocker des données tabulaires dans des tables Apache Iceberg. Les compartiments de table automatisent les tâches de gestion des tables telles que le compactage, la gestion des instantanés et le récupérateur de mémoire afin d’optimiser en permanence les performances des requêtes et de réduire les coûts. Que vous débutiez ou que vous disposiez de milliers de tables dans votre environnement Iceberg, les compartiments de table simplifient les lacs de données à n’importe quelle échelle. Pour plus d’informations, consultez Table buckets.
Considérations et restrictions
-
Toutes les opérations DDL prises en charge pour les tables Iceberg sont prises en charge pour les tables S3, à l’exception de ce qui suit :
-
Les opérations
ALTER TABLE RENAME,CREATE VIEWetALTER DATABASEne sont pas prises en charge. -
Opérations
OPTIMIZEetVACUUM– Vous pouvez gérer le compactage et la gestion des instantanés dans S3. Pour plus d’informations, consultez la documentation sur la maintenance des tables S3.
-
-
Les requêtes DDL sur les tables S3 enregistrées en tant que sources de données Athena ne sont pas prises en charge.
-
La réutilisation des résultats des requêtes n’est pas prise en charge.
-
Dans les groupes de travail où le chiffrement SSE-KMS ou CSE-KMS est activé, vous ne pouvez pas exécuter d’opérations d’écriture telles que
INSERT,UPDATE,DELETE, ouMERGEsur des tables S3. -
Dans les groupes de travail où l’option S3 Paiement par le demandeur est activée, vous ne pouvez pas exécuter d’opérations DML sur des tables S3.
Interrogation de tables S3 à partir d’Athena
Effectuez ces étapes préalables avant d’interroger des tables S3 dans Athena :
Créez un compartiment S3. Pour plus d’informations, consultez Creating a table bucket dans le Guide d’utilisation d’Amazon Simple Storage Service.
-
Assurez-vous de la réussite de l’intégration de vos compartiments de table au AWS Glue Data Catalog et à AWS Lake Formation en suivant les étapes figurant dans Prerequisites for integration et Integrating table buckets with AWS analytics services dans le Guide d’utilisation d’Amazon Simple Storage Service.
Note
Si vous avez activé l’intégration lors de la création d’un compartiment de table S3 à partir de la console S3 à l’étape 1, vous pouvez ignorer cette étape.
Dans le cadre du principal que vous utilisez pour exécuter des requêtes avec Athena, accordez des autorisations pour Lake Formation sur le catalogue de tables S3, à l’aide de la console Lake Formation ou de l’AWS CLI
Soumission de requêtes pour les tables S3
Soumettez une
CREATE DATABASErequête depuis Athena en utilisant l’utilisateur/le rôle autorisé ci-dessus. Dans cet exemple,s3tablescatalogest le catalogue de données Glue parent créé à partir de l’intégration ets3tablescatalog/est le catalogue de données Glue enfant créé pour chaque compartiment de table S3. Il existe deux manières de lancer une requête.amzn-s3-demo-bucket-
À l’aide de la base de données que vous avez créée à l’étape précédente, utilisez
CREATE TABLEpour créer une table. L’exemple suivant crée une table dans la base de donnéesque vous avez créée précédemment dans le catalogue Gluetest_namespaces3tablescatalog/.amzn-s3-demo-bucket -
Insérez les données dans la table que vous avez créée à l’étape précédente.
-
Une fois les données insérées dans la table, vous pouvez l’interroger.
Création de tables S3 dans Athena
Athena prend en charge la création de tables dans des espaces de noms de tables S3 existants ou des espaces de noms créés dans Athena à l’aide d’instructions CREATE DATABASE. La syntaxe utilisée pour créer une table S3 à partir d’Athena et la même que celle utilisée pour créer une table Iceberg classique, à ceci près que vous ne spécifiez pas la propriété LOCATION, comme illustré dans l’exemple suivant.
CREATE TABLE [db_name.]table_name (col_name data_type [COMMENT col_comment] [, ...] ) [PARTITIONED BY (col_name | transform, ... )] [TBLPROPERTIES ([, property_name=property_value] )]
Vous pouvez également créer des tables S3 à l’aide d’instructions CREATE TABLE AS SELECT (CTAS). Pour de plus amples informations, consultez Opérations CTAS dans le cadre des tables S3.
Enregistrement de catalogues de compartiment de table S3 en tant que sources de données Athena
Pour enregistrer des catalogues de compartiment de table S3 à l’aide de la console Athena, effectuez les étapes suivantes.
-
Ouvrez la console Athena à l’adresse https://console.aws.amazon.com/athena/
. -
Dans le panneau de navigation, sélectionnez Sources de données et catalogues.
-
Sur la page Sources de données et catalogues, sélectionnez Créer une source de données.
-
Dans Choisir une source de données, sélectionnez Amazon S3 – AWS Glue Data Catalog.
-
Dans la section AWS Glue Data Catalog, dans Compte de source de données, sélectionnez AWS Glue Data Catalog dans ce compte.
-
Dans Créer une table ou enregistrer un catalogue, sélectionnez Enregistrer un nouveau catalogue AWS Glue.
-
Dans la section Détails de la source de données, dans Nom de la source de données, saisissez le nom que vous souhaitez utiliser pour spécifier la source de données dans vos requêtes SQL ou utilisez le nom par défaut généré.
-
Dans Catalogue, sélectionnez Parcourir pour rechercher une liste de catalogues AWS Glue dans le même compte. Si vous ne voyez aucun catalogue existant, créez-en un dans la console AWS Glue
. -
Dans la boîte de dialogue Parcourir les catalogues AWS Glue, sélectionnez le catalogue que vous souhaitez utiliser, puis sélectionnez Choisir.
-
(Facultatif) Dans Identifications, saisissez les paires clé-valeur que vous souhaitez associer à la source de données.
-
Choisissez Suivant.
-
Sur la page Vérifier et créer, vérifiez que les informations que vous avez saisies sont correctes, puis sélectionnez Créer une source de données.
Opérations CTAS dans le cadre des tables S3
Amazon Athena prend désormais en charge les opérations CREATE TABLE AS SELECT (CTAS) dans le cadre des tables S3. Cette fonctionnalité vous permet de créer de nouvelles tables S3 sur la base des résultats d’une requête SELECT.
La création d’une requête CTAS dans le cadre d’une table S3 présente quelques différences importantes par rapport aux tables Athena standard :
-
Vous devez omettre la propriété location, car les tables S3 gèrent automatiquement leurs propres emplacements de stockage.
-
La propriété
table_typeest définie par défaut surICEBERG, vous n’avez donc pas besoin de la spécifier explicitement dans votre requête. -
Si vous ne spécifiez aucun format, le système utilise automatiquement
PARQUETcomme format par défaut pour vos données. -
Les autres propriétés suivent toutes la même syntaxe que pour les tables Iceberg classiques.
Avant de créer des tables S3 à l’aide de CTAS, vérifiez que les autorisations dont vous avez besoin sont configurées dans AWS Lake Formation. Plus précisément, vous avez besoin d’autorisations pour créer des tables dans le catalogue de tables S3. Sans ces autorisations, vos opérations CTAS échoueront.
Note
Si votre requête CTAS échoue, vous devrez peut-être supprimer votre table à l’aide de l’API relative aux tables S3 avant de tenter de réexécuter votre requête. Vous ne pouvez pas utiliser les instructions DROP TABLE Athena pour supprimer la table partiellement créée par la requête.
Exemple
CREATE TABLE "s3tablescatalog/amzn-s3-demo-bucket"."namespace"."s3-table-name" WITH ( format = 'PARQUET' ) AS SELECT * FROMsource_table;