Salta al contenuto

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

2 minuti di lettura
0

Desidero utilizzare Apache Spark con Amazon EMR o AWS Glue per interagire con Apache Iceberg da un Catalogo dati AWS Glue in un altro account AWS.

Risoluzione

Per utilizzare Spark con le tabelle Apache Iceberg del Catalogo dati AWS Glue, imposta i parametri nel processo di AWS Glue o nel cluster Amazon EMR.

Il processo in Amazon EMR o AWS Glue deve avere le autorizzazioni AWS Identity and Access Management (AWS IAM) per accedere al Catalogo dati AWS Glue multi-account. Per ulteriori informazioni, consulta Metodi per concedere l'accesso multi-account in AWS Glue.

Devi utilizzare la proprietà Catalog.Id per specificare l'ID dell'account in cui si trova il Catalogo dati AWS Glue. Per ulteriori informazioni, consulta Come effettuare una chiamata API multi-account.

Imposta i parametri in AWS Glue

Per i processi di AWS Glue, imposta i parametri del processo.

Esempio di parametri del processo:

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

Nota: sostituisci CROSS_ACCOUNT_ID con il tuo ID multi-account e amzn-s3-demo-bucket con la posizione del tuo bucket S3.

Imposta i parametri in Amazon EMR

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

Per impostare i parametri, esegui questo comando spark-submit:

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

Nota: sostituisci CROSS_ACCOUNT_ID con il tuo ID multi-account, amzn-s3-demo-bucket/ prefix con la posizione e il prefisso del tuo bucket S3 e my_catalog con il tuo Catalogo.

-oppure-

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://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",  
    {  
[

Nota: sostituisci CROSS_ACCOUNT_ID con il tuo ID multi-account e amzn-s3-demo-bucket con la posizione del tuo bucket S3.

Informazioni correlate

Leggi una tabella Iceberg da Amazon S3 utilizzando Spark

AWS UFFICIALEAggiornata 7 mesi fa