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.
Utilisation du cadre Iceberg dans AWS Glue
AWS Glue 3.0 et les versions ultérieures prennent en charge le cadre Apache Iceberg pour les lacs de données. Iceberg fournit un format de table hautement performant qui fonctionne exactement comme une table SQL. Cette rubrique décrit les fonctionnalités disponibles pour utiliser vos données dans AWS Glue lors de leur transport ou de leur stockage dans une table Iceberg. Pour en savoir plus sur Iceberg, consultez la documentation officielle d'Apache Iceberg
Vous pouvez utiliser AWS Glue pour effectuer des opérations de lecture et d'écriture sur des tables Iceberg dans Amazon S3, ou travailler avec des tables Iceberg à l'aide du catalogue de données AWS Glue. Des opérations supplémentaires, notamment l'insertion, la mise à jour et toutes les requêtes Spark
Note
ALTER TABLE … RENAME TO
n'est pas disponible pour Apache Iceberg 0.13.1 pour AWS Glue 3.0.
Le tableau suivant répertorie les versions d'Iceberg incluses dans chaque version de AWS Glue.
Version de AWS Glue | Version d'Iceberg prise en charge |
---|---|
4.0 | 1.0.0 |
3.0 | 0.13.1 |
Pour en savoir plus sur les cadres de lac de données pris en charge par AWS Glue, consultez Utilisation de cadres de lac de données avec des tâches AWS Glue ETL.
Activation du cadre Iceberg
Pour activer Iceberg pour AWS Glue, procédez comme suit :
-
Spécifiez
iceberg
comme valeur pour le paramètre de tâche--datalake-formats
. Pour de plus amples informations, veuillez consulter Paramètres des tâches AWS Glue. -
Créez une clé nommée
--conf
pour votre tâche AWS Glue et définissez-la sur la valeur suivante. Vous pouvez également définir la configuration suivante à l'aide deSparkConf
dans votre script. Ces paramètres permettent à Apache Spark de gérer correctement les tables Iceberg.spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions --conf spark.sql.catalog.glue_catalog=org.apache.iceberg.spark.SparkCatalog --conf spark.sql.catalog.glue_catalog.warehouse=s3://
<your-warehouse-dir
>/ --conf spark.sql.catalog.glue_catalog.catalog-impl=org.apache.iceberg.aws.glue.GlueCatalog --conf spark.sql.catalog.glue_catalog.io-impl=org.apache.iceberg.aws.s3.S3FileIOSi vous lisez ou écrivez dans des tables Iceberg enregistrées auprès de Lake Formation, ajoutez la configuration suivante pour activer la prise en charge de Lake Formation. Notez que seule l'AWS Glue 4.0 prend en charge les tables Iceberg enregistrées auprès de Lake Formation :
--conf spark.sql.catalog.glue_catalog.glue.lakeformation-enabled=true --conf spark.sql.catalog.glue_catalog.glue.id=<table-catalog-id>
Si vous utilisez AWS Glue 3.0 avec Iceberg 0.13.1, vous devez définir les configurations supplémentaires suivantes pour utiliser le gestionnaire de verrouillage Amazon DynamoDB afin de garantir une transaction de niveau atomique. AWS Glue 4.0 utilise le verrouillage optimiste par défaut. Pour plus d'informations, consultez Iceberg AWS Integrations
dans la documentation officielle d'Apache Iceberg. --conf spark.sql.catalog.glue_catalog.lock-impl=org.apache.iceberg.aws.glue.DynamoLockManager --conf spark.sql.catalog.glue_catalog.lock.table=
<your-dynamodb-table-name>
Utilisation d'une autre version d'Iceberg
Pour utiliser une version d'Iceberg non prise en charge par AWS Glue, spécifiez vos propres fichiers JAR Iceberg à l'aide du paramètre de tâche --extra-jars
. N'incluez pas iceberg
comme valeur du paramètre --datalake-formats
.
Activation du chiffrement pour les tables Iceberg
Note
Les tables Iceberg possèdent leurs propres mécanismes pour activer le chiffrement côté serveur. Vous devez activer cette configuration en plus de la configuration de sécurité d'AWS Glue.
Pour activer le chiffrement côté serveur sur les tables Iceberg, consultez les conseils de la documentation d'Iceberg
Exemple : écriture d'une table Iceberg sur Amazon S3 et enregistrement dans le catalogue de données AWS Glue
Cet exemple de script montre comment écrire dans une table Iceberg dans Amazon S3. L'exemple utilise Intégrations AWS Iceberg
Vous pouvez également écrire dans une table Iceberg sur Amazon S3 et dans le catalogue de données à l'aide des méthodes Spark.
Conditions préalables : vous devez créer un catalogue pour que la bibliothèque Iceberg puisse l'utiliser. Lorsque vous utilisez le catalogue de données AWS Glue, AWS Glue simplifie les choses. Le catalogue de données AWS Glue est préconfiguré pour être utilisé par les bibliothèques Spark en tant que glue_catalog
. Les tables du catalogue de données sont identifiées par un databaseName
et un tableName
. Pour plus d'informations sur le catalogue de données AWS Glue, consultez Découverte et catalogage des données dans AWS Glue.
Si vous n'utilisez pas le catalogue de données AWS Glue, vous devrez provisionner un catalogue via les API Spark. Pour plus d'informations, consultez Spark Configuration
Cet exemple écrit une table Iceberg dans Amazon S3 et le catalogue de données à l'aide de Spark.
Exemple : lecture d'une table Iceberg depuis Amazon S3 à l'aide du catalogue de données AWS Glue
Cet exemple lit la table Iceberg que vous avez créée dans Exemple : écriture d'une table Iceberg sur Amazon S3 et enregistrement dans le catalogue de données AWS Glue.
Exemple : insertion d'un DataFrame
dans une table Iceberg dans Amazon S3 à l'aide du catalogue de données AWS Glue
Cet exemple insère des données dans la table Iceberg que vous avez créée dans Exemple : écriture d'une table Iceberg sur Amazon S3 et enregistrement dans le catalogue de données AWS Glue.
Note
Cet exemple vous demande de définir le paramètre de tâche --enable-glue-datacatalog
afin d'utiliser le catalogue de données AWS Glue en tant que métastore Hive Apache Spark. Pour en savoir plus, veuillez consulter la section Paramètres des tâches AWS Glue.
Exemple : lecture d'une table Iceberg depuis Amazon S3 à l'aide de Spark
Conditions préalables : vous devez créer un catalogue pour que la bibliothèque Iceberg puisse l'utiliser. Lorsque vous utilisez le catalogue de données AWS Glue, AWS Glue simplifie les choses. Le catalogue de données AWS Glue est préconfiguré pour être utilisé par les bibliothèques Spark en tant que glue_catalog
. Les tables du catalogue de données sont identifiées par un databaseName
et un tableName
. Pour plus d'informations sur le catalogue de données AWS Glue, consultez Découverte et catalogage des données dans AWS Glue.
Si vous n'utilisez pas le catalogue de données AWS Glue, vous devrez provisionner un catalogue via les API Spark. Pour plus d'informations, consultez Spark Configuration
Cet exemple lit une table Iceberg dans Amazon S3 à partir du catalogue de données à l'aide de Spark.
Exemple : lecture et écriture d'une table Iceberg avec contrôle des autorisations de Lake Formation
Cet exemple lit et écrit dans une table Iceberg avec contrôle des autorisations de Lake Formation.
Créez une table Iceberg et enregistrez-la dans Lake Formation :
Pour activer le contrôle des autorisations de Lake Formation, vous devez d'abord enregistrer le chemin d'accès Amazon S3 de la table sur Lake Formation. Pour plus d'informations, consultez la rubrique Enregistrement d'un emplacement Amazon S3. Vous pouvez l'enregistrer depuis la console Lake Formation ou à l'aide d'AWS CLI :
aws lakeformation register-resource --resource-arn arn:aws:s3:::<s3-bucket>/<s3-folder> --use-service-linked-role --region <REGION>
Une fois que vous avez enregistré un emplacement Amazon S3, toute table AWS Glue pointant vers cet emplacement (ou l'un de ses emplacements enfants) renverra la valeur du paramètre
IsRegisteredWithLakeFormation
comme vraie dans l'appelGetTable
.Créez une table Iceberg qui pointe vers le chemin enregistré via Spark SQL :
Note
Voici des exemples Python.
dataFrame.createOrReplaceTempView("tmp_<your_table_name>") query = f""" CREATE TABLE glue_catalog.<your_database_name>.<your_table_name> USING iceberg AS SELECT * FROM tmp_<your_table_name> """ spark.sql(query)
Vous pouvez également créer la table manuellement via API
CreateTable
AWS Glue. Pour plus d'informations, consultez la section Création de tables Apache Iceberg.
Accordez à Lake Formation l'autorisation d'accéder au rôle IAM da la tâche. Vous pouvez accorder des autorisations depuis la console Lake Formation ou utiliser la CLI AWS. Pour plus d'informations, consultez : https://docs.aws.amazon.com/lake-formation/latest/dg/granting-table-permissions.html
Lisez une table Iceberg enregistrée dans Lake Formation. Le code est le même que celui de la lecture d'une table Iceberg non enregistrée. Notez que votre rôle IAM de la tâche AWS Glue doit disposer de l'autorisation SELECT pour que la lecture réussisse.
# Example: Read an Iceberg table from the AWS Glue Data Catalog from awsglue.context import GlueContextfrom pyspark.context import SparkContext sc = SparkContext() glueContext = GlueContext(sc) df = glueContext.create_data_frame.from_catalog( database="<your_database_name>", table_name="<your_table_name>", additional_options=additional_options )
Écrivez dans une table Iceberg enregistrée dans Lake Formation. Le code est le même que celui de l'écriture dans une table Iceberg non enregistrée. Notez que votre rôle IAM de la tâche AWS Glue doit disposer de l'autorisation SUPER pour que l'écriture réussisse.
glueContext.write_data_frame.from_catalog( frame=dataFrame, database="<your_database_name>", table_name="<your_table_name>", additional_options=additional_options )