跳至內容

如何在 Spark 中使用具有跨帳戶 AWS Glue Data Catalog 的 Apache Iceberg?

2 分的閱讀內容
0

我想要使用 Apache Spark 搭配 Amazon EMR 或 AWS Glue,從另一個 AWS 帳戶的 AWS Glue Data Catalog 與 Apache Iceberg 互動。

解決方法

若要將 Spark 與 AWS Glue Data Catalog 的 Apache Iceberg 資料表搭配使用,請在您的 AWS Glue 作業或 Amazon EMR 叢集設定參數。

Amazon EMR 或 AWS Glue 作業必須具有 AWS Identity and Access Management (IAM) 權限,才能跨帳戶存取 AWS Glue Data Catalog。如需更多資訊,請參閱在 AWS Glue 中授予跨帳戶存取權的方法

您必須使用 Catalog.Id 屬性來指定 AWS Glue Data Catalog 所在帳戶的 ID。如需更多資訊,請參閱進行跨帳戶 API 呼叫

在 AWS Glue 中設定參數

對於 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://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

**注意:**將 CROSS_ACCOUNT_ID 替換為您的跨帳戶 ID,並將 amzn-s3-demo-bucket 替換為您的 S3 儲存貯體位置。

在 Amazon EMR 中設定參數

對於執行版本 6.5 或更新版本的 Amazon EMR 叢集,請在提交作業時設定參數。或者,使用 Spark 預設組態 /etc/spark/conf/spark-defaults.conf。如需更多資訊,請參閱搭配 Spark 使用 Iceberg 叢集

若要設定參數,請執行以下 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

**注意:**將 CROSS_ACCOUNT_ID 替換為您的跨帳戶 ID,將 **amzn-s3-demo-bucket/**首碼 替換為您的 S3 儲存貯體位置與首碼,並將 my_catalog 替換為您的目錄。

-或-

使用以下 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",  
    {  
[

**注意:**將 CROSS_ACCOUNT_ID 替換為您的跨帳戶 ID,並將 amzn-s3-demo-bucket 替換為您的 S3 儲存貯體位置。

相關資訊

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

AWS 官方已更新 4 個月前