Come posso usare Apache Iceberg con un Catalogo dati AWS Glue multi-account in Spark?

2 minuti di lettura
0

Voglio usare Spark con Amazon EMR o AWS Glue per interagire con Apache Iceberg da un Catalogo dati AWS Glue multi-account.

Risoluzione

Imposta i seguenti parametri perutilizzare Spark per interagire con le tabelle Apache Iceberg dal Catalogo dati 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

Puoi impostare questi parametri in diversi modi, dipende se utilizzi un processo AWS Glue o un cluster Amazon EMR.

Per i processi AWS Glue, utilizza i parametri del processo. Ad esempio:

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

Per un cluster Amazon EMR che esegue la versione 6.5 o successiva, imposta i parametri quando invii il processo. Oppure, usa la configurazione predefinita di Spark (/etc/spark/conf/spark-defaults.conf). Per ulteriori informazioni, consultaUtilizzare un cluster Iceberg con Spark.

Nota: Per gli scenari multi-account, devi sempre utilizzare la proprietà glue.id per specificare l'ID del Catalogo dati AWS Glue corrispondente (ID account AWS).

Se utilizzi Amazon EMR versione 6.5 o successiva, utilizza la seguente configurazione 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: Il processo Amazon EMR o AWS Glue deve disporre di autorizzazioni AWS Identity and Access Management (IAM) sufficienti per accedere al Catalogo dati AWS Glue multi-account. Per ulteriori informazioni, consultaEffettuare una chiamata API multi-account.

Informazioni correlate

Leggi una tabella Iceberg da Amazon S3 utilizzando Spark

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa