Apache Iceberg を Spark のクロスアカウント AWS Glue データカタログで使用する方法を教えてください。

所要時間1分
0

Spark を Amazon EMR または AWS Glue と一緒に使用して、クロスアカウントの AWS Glue データカタログから Apache Iceberg とやりとりしたいのですが。

解決方法

Spark を使用して AWS Glue データカタログの 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 データカタログ ID (AWS アカウント ID) を指定する必要があります。

Amazon EMR バージョン 6.5 以降を使用している場合は、以下の スパークデフォルト 設定を使用してください。

]    }  
        "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 Glue データカタログにアクセスするための十分な AWS ID およびアクセス管理 (IAM) 権限が必要です。詳細については、クロスアカウント API 呼び出しを行うを参照してください。

関連情報

Spark を使用して Amazon S3 からアイスバーグテーブルを読み取る

AWS公式
AWS公式更新しました 1年前