Passer au contenu

Comment puis-je utiliser Apache Iceberg avec un catalogue de données AWS Glue intercompte dans Spark ?

Lecture de 2 minute(s)
0

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

Résolution

Pour utiliser Spark avec les tables Apache Iceberg du catalogue de données AWS Glue, définissez les paramètres de votre tâche AWS Glue ou de votre cluster Amazon EMR.

La tâche Amazon EMR ou AWS Glue doit disposer d'autorisations Gestion des identités et des accès AWS (AWS IAM) suffisantes pour accéder au catalogue de données intercompte AWS Glue. Pour plus d'informations, consultez la section Méthodes d'octroi d'un accès intercompte dans AWS Glue.

Vous devez utiliser la propriété Catalog.Id pour spécifier l'ID du compte dans lequel se trouve le catalogue de données AWS Glue. Pour plus d'informations, consultez la section Effectuer un appel d'API intercompte.

Définir les paramètres dans AWS Glue

Pour les tâches AWS Glue, définissez les paramètres de tâche.

Exemples de paramètres de tâche :

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://amzn-s3-demo-bucket/ --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

Remarque : Remplacez CROSS_ACCOUNT_ID par votre ID intercompte, amzn-s3-demo-bucket par l'emplacement de votre compartiment S3.

Définir les paramètres dans Amazon EMR

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.

Pour définir les paramètres, exécutez la commande spark-submit suivante :

spark-submit \
--conf spark.sql.catalog.my_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.my_catalog.warehouse=s3://amzn-s3-demo-bucket/prefix \
--conf spark.sql.catalog.my_catalog.type=glue \
--conf spark.sql.catalog.my_catalog.glue.id=CROSS_ACCOUNT_ID \
--conf spark.sql.defaultCatalog=my_catalog \
--conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions

Remarque : Remplacez CROSS_ACCOUNT_ID par votre ID intercompte, le préfixe amzn-s3-demo-bucket/ par l'emplacement et le préfixe de votre compartiment S3, et my_catalog par votre catalogue.

-ou-

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://amzn-s3-demo-bucket/",  
            "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 : Remplacez CROSS_ACCOUNT_ID par votre ID intercompte, amzn-s3-demo-bucket par l'emplacement de votre compartiment S3.

Informations connexes

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

AWS OFFICIELA mis à jour il y a 8 mois