¿Cómo puedo usar Apache Iceberg con un Catálogo de datos de AWS Glue para varias cuentas en Spark?

2 minutos de lectura
0

Quiero usar Spark con Amazon EMR o AWS Glue para interactuar con Apache Iceberg desde un Catálogo de datos de AWS Glue entre cuentas.

Resolución

Defina los siguientes parámetros para usar Spark para interactuar con las tablas de Apache Iceberg del Catálogo de datos de 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

Puede configurar estos parámetros de varias maneras, en función de si utiliza un trabajo de AWS Glue o un clúster de Amazon EMR.

Para los trabajos de AWS Glue, utilice los parámetros del trabajo. Por ejemplo:

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

En un clúster de Amazon EMR que ejecute la versión 6.5 o posterior, defina los parámetros al enviar el trabajo. O bien, utilice la configuración predeterminada de Spark (/etc/spark/conf/spark-defaults.conf). Para obtener más información, consulte Usar un clúster de Iceberg con Spark.

Nota: En situaciones con varias cuentas, siempre tiene que usar la propiedad glue.id para especificar el ID del Catálogo de datos de AWS Glue correspondiente (ID de cuenta de AWS).

Si utiliza la versión 6.5 o posterior de Amazon EMR, utilice la siguiente configuración de spark-defaults:

]    }  
        "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",  
    {  
[

Nota: El trabajo de Amazon EMR o AWS Glue tiene que tener suficientes permisos de AWS Identity y Access Management (IAM) para acceder al Catálogo de datos de AWS Glue entre cuentas. Para obtener más información, consulte Realizar una llamada a la API entre cuentas.

Información relacionada

Lea una tabla de Iceberg de Amazon S3 con Spark

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año