Como posso usar o Apache Iceberg com um catálogo de dados do AWS Glue entre contas no Spark?

2 minuto de leitura
0

Quero usar o Spark com o Amazon EMR ou o AWS Glue para interagir com o Apache Iceberg a partir de um catálogo de dados do AWS Glue entre contas.

Resolução

Defina os seguintes parâmetros para usar o Spark para interagir com as tabelas do Apache Iceberg do catálogo de dados do 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

Você pode definir esses parâmetros de várias maneiras, dependendo se você usa um trabalho do AWS Glue ou um cluster do Amazon EMR.

Para trabalhos do AWS Glue, use parâmetros de tarefa. Por exemplo:

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

Para um cluster do Amazon EMR que executa a versão 6.5 ou posterior, defina os parâmetros ao enviar a tarefa. Ou use a configuração padrão do Spark (/etc/spark/conf/spark-defaults.conf). Para obter mais informações, consulte Usar um cluster Iceberg com o Spark.

Observação: Para cenários entre contas, você sempre deve usar a propriedade glue.id para especificar o ID correspondente do catálogo de dados do AWS Glue (ID da conta da AWS).

Se você estiver usando o Amazon EMR versão 6.5 ou posterior, use a seguinte configuração 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",  
    {  
[

Observação: O trabalho do Amazon EMR ou do AWS Glue deve ter permissões suficientes do AWS Identity and Access Management (IAM) para acessar o catálogo de dados do AWS Glue entre contas. Para obter mais informações, consulte Fazer uma chamada de API entre contas.

Informações relacionadas

Leia uma tabela Iceberg do Amazon S3 usando o Spark

AWS OFICIAL
AWS OFICIALAtualizada há um ano