Apache Spark를 Amazon EMR 또는 AWS Glue와 함께 사용하여 다른 AWS 계정의 AWS Glue Data Catalog에서 Apache Iceberg와 상호 작용하고 싶습니다.
해결 방법
AWS Glue Data Catalog의 Apache Iceberg 테이블과 함께 Spark를 사용하려면 AWS Glue 작업 또는 Amazon EMR 클러스터에서 파라미터를 설정하십시오.
Amazon EMR 또는 AWS Glue 작업에는 교차 계정 AWS Glue Data Catalog에 액세스할 수 있는 AWS Identity and Access Management(IAM) 권한이 있어야 합니다. 자세한 내용은 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/****prefix를 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 테이블 읽기