如何在 Spark 中搭配跨帳戶 AWS Glue Data Catalog 使用 Apache Iceberg?

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)。如需詳細資訊,請參閱搭配 Spark 使用 Iceberg 叢集

**注意:**對於跨帳戶案例,您必須始終使用 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 (AWS IAM) 權限,才能存取跨帳戶的 AWS Glue Data Catalog。如需詳細資訊,請參閱進行跨帳戶 API 呼叫

相關資訊

使用 Spark 讀取來自 Amazon S3 的 Iceberg 資料表

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