Comment utiliser Apache Iceberg avec un catalogue de données AWS Glue multicomptes dans Spark ?

Lecture de 2 minute(s)
0

Je souhaite utiliser Spark avec Amazon EMR ou AWS Glue pour interagir avec Apache Iceberg à partir d'un catalogue de données AWS Glue multicomptes.

Résolution

Définissez les paramètres suivants pour utiliser Spark afin d'interagir avec les tables Apache Iceberg du catalogue de données AWS Glue :


--conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \  
--conf spark.sql.catalog.glue_catalog=org.apache.iceberg.spark.SparkCatalog \  
--conf spark.sql.catalog.dev.glue.id=<CROSS_ACCOUNT_ID> \  
--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.S3FileIO

Vous pouvez définir ces paramètres de différentes manières, selon que vous utilisez une tâche AWS Glue ou un cluster Amazon EMR.

Pour les tâches AWS Glue, utilisez les paramètres des tâches. Par exemple :

Key:  --conf  
Value: spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions --conf spark.sql.catalog.dev=org.apache.iceberg.spark.SparkCatalog --conf spark.sql.catalog.dev.glue.id=<CROSS_ACCOUNT_ID> --conf spark.sql.catalog.dev.warehouse=s3://<WAREHOUSE_DIR>/ --conf spark.sql.catalog.dev.catalog-impl=org.apache.iceberg.aws.glue.GlueCatalog --conf spark.sql.catalog.dev.io-impl=org.apache.iceberg.aws.s3.S3FileIO

Pour un cluster Amazon EMR qui exécute la version 6.5 ou ultérieure, définissez les paramètres lorsque vous soumettez la tâche. Vous pouvez également utiliser la configuration par défaut de Spark (/etc/spark/conf/spark-defaults.conf). Pour plus d'informations, consultez la section Utiliser un cluster Iceberg avec Spark.

**Remarque :**Pour les scénarios multicomptes, vous devez toujours utiliser la propriété glue.id pour spécifier l'identifiant du catalogue de données AWS Glue correspondant (identifiant de compte AWS).

Si vous utilisez Amazon EMR version 6.5 ou ultérieure, utilisez la configuration spark-defaults suivante :

]    }  
        "configurations": []  
        },  
            "spark.sql.catalog.dev.io-impl": "org.apache.iceberg.aws.s3.S3FileIO"  
            "spark.sql.catalog.dev.catalog-impl": "org.apache.iceberg.aws.glue.GlueCatalog",  
            "spark.sql.catalog.dev.warehouse": "s3://<WAREHOUSE_DIR>/",  
            "spark.sql.catalog.dev.glue.id": "<CROSS_ACCOUNT_ID>",  
            "spark.sql.catalog.dev": "org.apache.iceberg.spark.SparkCatalog",  
            "spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",  
            "spark.jars": "/usr/share/aws/iceberg/lib/iceberg-spark3-runtime.jar",  
        "properties": {  
        "classification": "spark-defaults",  
    {  
    },  
        "configurations": []  
        },  
            "iceberg.enabled": "true"  
        "properties": {  
        "classification": "iceberg-defaults",  
    {  
[

Remarque : La tâche Amazon EMR ou AWS Glue doit disposer d'autorisations AWS Identity and Access Management (IAM) suffisantes pour accéder au catalogue de données multicomptes AWS Glue. Pour plus d'informations, consultez la section Effectuer un appel d'API entre comptes.

Informations connexes

Lire un tableau Iceberg depuis Amazon S3 à l'aide de Spark

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an