Synchronisation des métadonnées Delta Lake
Athena synchronise les métadonnées de la table, notamment le schéma, les colonnes de partition et les propriétés de la table, avec AWS Glue si vous utilisez Athena pour créer votre table Delta Lake. Au fil du temps, ces métadonnées peuvent perdre leur synchronisation avec les métadonnées de la table sous-jacente dans le journal des transactions. Pour garder votre table à jour, vous pouvez choisir l'une des options suivantes :
-
Utilisez le Crawler AWS Glue pour les tables Delta Lake. Pour plus d’informations, consultez l’article Introducing native Delta Lake table support with AWS Glue crawlers
sur le blog AWS Big Data Blog et Scheduling an AWS Glue crwaler dans le Guide de développement d’AWS Glue. -
Annulez et recréez la table dans Athena.
-
Utilisez le kit SDK, l'interface de ligne de commande ou la console AWS Glue pour mettre à jour manuellement le schéma dans AWS Glue.
Notez que les fonctionnalités suivantes nécessitent que votre schéma AWS Glue ait toujours le même schéma que le journal des transactions :
-
Lake Formation
-
Vues
-
Filtres de lignes et de colonnes
Si votre flux de travail ne nécessite aucune de ces fonctionnalités et que vous préférez ne pas conserver cette compatibilité, vous pouvez utiliser l'instruction DDL CREATE TABLE dans Athena, puis ajouter le chemin Amazon S3 en tant que paramètre SerDe dans AWS Glue.
Vous pouvez suivre la procédure ci-dessous pour créer une table Delta Lake à l’aide des consoles Athena et AWS Glue.
Pour créer une table Delta Lake à l'aide de l'Athena et des consoles AWS Glue
Ouvrez la console Athena à l’adresse https://console.aws.amazon.com/athena/
. -
Dans l'éditeur de requêtes Athena, utilisez l'instruction DDL suivante pour créer votre table Delta Lake. Notez que lorsque vous utilisez cette méthode, la valeur de
TBLPROPERTIESdoit être'spark.sql.sources.provider' = 'delta'et non'table_type' = 'delta'.Notez que ce même schéma (avec une seule colonne nommée
colde typearray<string>) est inséré lorsque vous utilisez Apache Spark (Athena pour Apache Spark) ou la plupart des autres moteurs pour créer votre table.CREATE EXTERNAL TABLE [db_name.]table_name(col array<string>) LOCATION 's3://amzn-s3-demo-bucket/your-folder/' TBLPROPERTIES ('spark.sql.sources.provider' = 'delta') Ouvrez la console AWS Glue, à l’adresse https://console.aws.amazon.com/glue/
. -
Dans le panneau de navigation, choisissez Catalogue de données, Tables.
-
Dans la liste des tables, choisissez le lien correspondant à votre table.
-
Sur la page de la table, choisissez Actions, Modifier la table.
-
Dans la section Paramètres Serde, ajoutez la clé
pathavec la valeurs3://amzn-s3-demo-bucket/.your-folder/ -
Choisissez Enregistrer.
Pour créer une table Delta Lake à l’aide de l’AWS CLI, entrez une commande semblable à celle présentée dans l’exemple celle-ci.
aws glue create-table --database-name dbname \ --table-input '{"Name" : "tablename", "StorageDescriptor":{ "Columns" : [ { "Name": "col", "Type": "array<string>" } ], "Location" : "s3://amzn-s3-demo-bucket/<prefix>/", "SerdeInfo" : { "Parameters" : { "serialization.format" : "1", "path" : "s3://amzn-s3-demo-bucket/<prefix>/" } } }, "PartitionKeys": [], "TableType": "EXTERNAL_TABLE", "Parameters": { "EXTERNAL": "TRUE", "spark.sql.sources.provider": "delta" } }'