如何在 Spark 中将 Apache Iceberg 与跨账户 AWS Glue Data Catalog 配合使用?

1 分钟阅读
0

我想要将 Spark 与 Amazon EMR 或 AWS Glue 配合使用,以便从跨账户 AWS Glue Data Catalog 与 Apache Iceberg 进行交互。

解决方法

设置以下参数以使用 Spark 从 AWS Glue Data Catalog 与 Apache Iceberg 表进行交互


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

您可以通过多种方式设置这些参数,具体取决于您使用的是 AWS Glue 作业还是 Amazon EMR 集群。

若为 AWS Glue 作业,请使用作业参数。例如:

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

若为运行 6.5 版或更高版本的 Amazon EMR 集群,请在提交作业时设置参数。或者,使用 Spark 默认配置 (/etc/spark/conf/spark-defaults.conf)。有关详细信息,请参阅将 Iceberg 集群与 Spark 配合使用

**注意:**对于跨账户场景,必须始终使用 glue.id 属性来指定相应的 AWS Glue Data Catalog ID(AWS 账户 ID)。

如果您使用的是 Amazon EMR 6.5 或更高版本,请使用以下 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",  
    {  
[

注意: Amazon EMR 或 AWS Glue 作业必须具有足够的 AWS Identity and Access Management (IAM) 权限才能访问跨账户 AWS Glue Data Catalog。有关详细信息,请参阅进行跨账户 API 调用

相关信息

使用 Spark 从 Amazon S3 读取 Iceberg 表

AWS 官方
AWS 官方已更新 1 年前