Remplissage et gestion des tables transactionnelles - AWS Glue

Remplissage et gestion des tables transactionnelles

Apache Iceberg, Apache Hudi et Linux Foundation Delta Lake sont des formats de table open source conçus pour gérer l’analytique des données à grande échelle et les charges de travail des lacs de données dans Apache Spark.

Vous pouvez remplir les tables Iceberg, Hudi et Delta Lake dans l’AWS Glue Data Catalog à l’aide des méthodes suivantes :

  • AWS Glue crawler : AWS Glue crawler peut automatiquement découvrir et remplir les métadonnées des tables Iceberg, Hudi et Delta Lake dans le catalogue de données. Pour plus d’informations, consultez Utilisation de robots pour alimenter le catalogue de données .

  • Tâches ETL AWS Glue : vous pouvez créer des tâches ETL pour écrire des données dans les tables Iceberg, Hudi et Delta Lake et remplir leurs métadonnées dans le catalogue de données. Pour plus d’informations, consultez Using data lake frameworks with AWS Glue ETL jobs.

  • Console AWS Glue, console AWS Lake Formation, AWS CLI ou API : vous pouvez utiliser la console AWS Glue, la console Lake Formation ou l’API pour créer et gérer des définitions de tables Iceberg dans le catalogue de données.

Création de tables Apache Iceberg

Vous pouvez créer des tables Apache Iceberg qui utilisent le format de données Apache Parquet dans l’AWS Glue Data Catalog avec des données résidant dans Amazon S3. Une table dans le catalogue de données correspond à la définition des métadonnées qui représente les données dans un entrepôt de données. Par défaut, AWS Glue crée des tables Iceberg v2. Pour connaître la différence entre les tables v1 et v2, consultez la section Modifications de version de format dans la documentation Apache Iceberg.

Apache Iceberg est un format de table ouvert pour les jeux de données analytiques très volumineux. Iceberg permet de modifier facilement votre schéma, également ce que l’on appelle l’évolution du schéma, ce qui signifie que les utilisateurs peuvent ajouter, renommer ou supprimer des colonnes d’une table de données sans perturber les données sous-jacentes. Iceberg fournit également une prise en charge pour la gestion des versions des données, ce qui permet aux utilisateurs de suivre les modifications apportées aux données au fil du temps. Cela active la fonctionnalité Time Travel, qui permet aux utilisateurs d’accéder aux versions historiques des données, de les interroger, mais aussi d’analyser les modifications apportées aux données entre les mises à jour et les suppressions.

Vous pouvez utiliser AWS Glue, la console Lake Formation ou l’opération CreateTable dans l’API AWS Glue pour créer une table Iceberg dans le catalogue de données. Pour plus d’informations, consultez CreateTable action (Python: create_table).

Lorsque vous créez une table Iceberg dans le catalogue de données, vous devez spécifier le format de la table et le chemin d’accès au fichier de métadonnées dans Amazon S3 pour pouvoir effectuer des lectures et des écritures.

Vous pouvez utiliser Lake Formation pour sécuriser votre table Iceberg à l’aide d’autorisations de contrôle précis des accès lorsque vous enregistrez l’emplacement des données Amazon S3 auprès d’AWS Lake Formation. Pour les données sources dans Simple Storage Service (Amazon S3) et les métadonnées qui ne sont pas enregistrées dans Lake Formation, l'accès est déterminé par les politiques d'autorisation IAM pour Simple Storage Service (Amazon S3) et les actions AWS Glue. Pour plus d’informations, consultez Managing permissions.

Note

Le catalogue de données ne prend pas en charge la création de partitions ni l’ajout de propriétés de table Iceberg.

Prérequis

Pour créer des tables Iceberg dans le catalogue de données et configurer les autorisations d’accès aux données de Lake Formation, vous devez remplir les conditions suivantes :

  1. Autorisations requises pour créer des tables Iceberg sans les données enregistrées auprès de Lake Formation :

    Outre les autorisations requises pour créer une table dans le catalogue de données, le créateur de table exige les autorisations suivantes :

    • s3:PutObject sur la ressource arn:aws:s3:::{bucketName}

    • s3:GetObject sur la ressource arn:aws:s3:::{bucketName}

    • s3:DeleteObject sur la ressource arn:aws:s3:::{bucketName}

  2. Autorisations requises pour créer des tables Iceberg avec des données enregistrées auprès de Lake Formation :

    Pour utiliser Lake Formation afin de gérer et de sécuriser les données de votre lac de données, enregistrez votre site Amazon S3 contenant les données pour les tables auprès de Lake Formation. Cela permet à Lake Formation de vendre des informations d’identification aux services d’analytique AWS tels qu’Athena, Redshift Spectrum et Amazon EMR pour accéder aux données. Pour plus d’informations sur l’enregistrement d’un emplacement Amazon S3, consultez Adding an Amazon S3 location to your data lake.

    Un principal qui lit et écrit les données sous-jacentes enregistrées auprès de Lake Formation doit disposer des autorisations suivantes :

    • lakeformation:GetDataAccess

    • DATA_LOCATION_ACCESS

      Un principal qui possède des autorisations de localisation des données sur un emplacement possède également des autorisations d’emplacement sur tous les sites enfant.

      Pour plus d’informations sur les autorisations d’emplacement des données, consultez l’ulink Underlying data access control.

Pour activer le compactage, le service doit endosser un rôle IAM autorisé à mettre à jour les tables dans le catalogue de données. Pour plus d’informations, consultez Conditions préalables requises pour l’optimisation des tables .

Création d’une table Iceberg

Vous pouvez créer des tables Iceberg v1 et v2 à l’aide d’AWS Glue, de la console Lake Formation ou d’AWS Command Line Interface, comme indiqué sur cette page. Vous pouvez également créer des tables Iceberg à l’aide d’AWS Glue crawler. Pour plus d’informations, consultez Data Catalog and Crawlers dans le Guide du développeur AWS Glue.

Pour créer une table Iceberg

Console
  1. Connectez-vous à la AWS Management Console et ouvrez la console AWS Glue à l’adresse https://console.aws.amazon.com/glue/.

  2. Sous Catalogue de données, choisissez Tables, puis utilisez le bouton Créer une table pour spécifier les attributs suivants :

    • Nom de table : saisissez un nom pour la table. Si vous utilisez Athena pour accéder à des tables, utilisez ces conseils de dénomination figurant dans le Guide de l’utilisateur Amazon Athena.

    • Base de données : choisissez une base de données existante ou créez-en une.

    • Description : description de la table. Vous pouvez écrire une description vous aidant à comprendre le contenu de la table.

    • Format de tableau : pour Format de tableau, choisissez Apache Iceberg.

    • Activer le compactage : choisissez Activer le compactage pour compacter les petits objets Amazon S3 de la table en objets plus grands.

    • Rôle IAM : pour exécuter le compactage, le service endosse un rôle IAM en votre nom. Vous pouvez choisir un rôle IAM à l'aide de la liste déroulante. Assurez-vous que le rôle dispose des autorisations requises pour activer le compactage.

      Pour en savoir plus sur les autorisations nécessaires, consultez Conditions préalables requises pour l’optimisation des tables .

    • Emplacement : indiquez le chemin d’accès au dossier dans Amazon S3 qui stocke la table de métadonnées. Iceberg a besoin d’un fichier de métadonnées et d’un emplacement dans le catalogue de données pour pouvoir effectuer des lectures et des écritures.

    • Schéma : choisissez Ajouter des colonnes pour ajouter des colonnes et les types de données des colonnes. Vous avez la possibilité de créer une table vide et de mettre à jour le schéma ultérieurement. Le catalogue de données prend en charge les types de données Hive. Pour plus d’informations, consultez Hive data types.

      Iceberg vous permet de faire évoluer le schéma et la partition après avoir créé la table. Vous pouvez utiliser des requêtes Athena pour mettre à jour le schéma de table et des requêtes Spark pour mettre à jour les partitions.

AWS CLI
aws glue create-table \ --database-name iceberg-db \ --region us-west-2 \ --open-table-format-input '{ "IcebergInput": { "MetadataOperation": "CREATE", "Version": "2" } }' \ --table-input '{"Name":"test-iceberg-input-demo", "TableType": "EXTERNAL_TABLE", "StorageDescriptor":{ "Columns":[ {"Name":"col1", "Type":"int"}, {"Name":"col2", "Type":"int"}, {"Name":"col3", "Type":"string"} ], "Location":"s3://DOC_EXAMPLE_BUCKET_ICEBERG/" } }'
Rubriques