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 클러스터의 경우 작업을 제출할 때 파라미터를 설정합니다. 또는 스파크 기본 구성(/etc/spark/conf/spark-defaults.conf)을 사용하세요. 자세한 내용은 Spark와 함께 Iceberg 클러스터 사용을 참조하세요.
참고: 교차 계정 시나리오의 경우 항상 glue.id 속성을 사용하여 해당 AWS Glue 데이터 카탈로그 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 Glue 데이터 카탈로그에 액세스할 수 있는 충분한 AWS ID 및 액세스 관리(IAM) 권한이 있어야 합니다. 자세한 내용은 교차 계정 API 호출을 참조하세요.
관련 정보
Spark를 사용하여 Amazon S3에서 Iceberg 테이블 읽기