Wie kann ich Apache Iceberg mit einem kontoübergreifenden AWS Glue-Datenkatalog in Spark verwenden?

Lesedauer: 2 Minute
0

Ich möchte Spark mit Amazon EMR oder AWS Glue verwenden, um über einen kontoübergreifenden AWS Glue-Datenkatalog mit Apache Iceberg zu interagieren.

Behebung

Legen Sie die folgenden Parameter fest, um Spark für die Interaktion mit Apache Iceberg-Tabellen aus dem AWS Glue Data Catalog zu verwenden:


--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

Sie können diese Parameter auf verschiedene Arten festlegen, je nachdem, ob Sie einen AWS Glue-Job oder einen Amazon EMR-Cluster verwenden.

Verwenden Sie für AWS Glue-Jobsjob parameters. Zum Beispiel:

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

Für einen Amazon EMR-Cluster, auf dem Version 6.5 oder höher ausgeführt wird, legen Sie die Parameter fest, wenn Sie den Job abschicken. Oder verwenden Sie die Spark-Standardkonfiguration (/etc/spark/conf/spark-defaults.conf). Weitere Informationen finden Sie unter Verwenden eines Iceberg-Clusters mit Spark.

**Hinweis:**In kontoübergreifenden Szenarien müssen Sie immer die Eigenschaft glue.idverwenden, um die entsprechende AWS Glue-Datenkatalog-ID (AWS-Konto-ID) anzugeben.

Wenn Sie Amazon EMR Version 6.5 oder höher verwenden, verwenden Sie die folgende spark-defaults-Konfiguration:

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

Hinweis: Der Amazon EMR- oder AWS Glue-Job muss über ausreichende AWS Identity and Access Management (IAM) -Berechtigungen verfügen, um auf den kontoübergreifenden AWS Glue-Datenkatalog zuzugreifen. Weitere Informationen finden Sie unter Einen kontoübergreifenden API-Aufruf durchführen.

Weitere Informationen

Lesen Sie mit Spark eine Iceberg-Tabelle von Amazon S3

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr