Voglio usare Spark con Amazon EMR o AWS Glue per interagire con Apache Iceberg da un Catalogo dati AWS Glue multi-account.
Risoluzione
Imposta i seguenti parametri perutilizzare Spark per interagire con le tabelle Apache Iceberg dal Catalogo dati AWS Glue:
--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
Puoi impostare questi parametri in diversi modi, dipende se utilizzi un processo AWS Glue o un cluster Amazon EMR.
Per i processi AWS Glue, utilizza i parametri del processo. Ad esempio:
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
Per un cluster Amazon EMR che esegue la versione 6.5 o successiva, imposta i parametri quando invii il processo. Oppure, usa la configurazione predefinita di Spark (/etc/spark/conf/spark-defaults.conf). Per ulteriori informazioni, consultaUtilizzare un cluster Iceberg con Spark.
Nota: Per gli scenari multi-account, devi sempre utilizzare la proprietà glue.id per specificare l'ID del Catalogo dati AWS Glue corrispondente (ID account AWS).
Se utilizzi Amazon EMR versione 6.5 o successiva, utilizza la seguente configurazione 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",
{
[
Nota: Il processo Amazon EMR o AWS Glue deve disporre di autorizzazioni AWS Identity and Access Management (IAM) sufficienti per accedere al Catalogo dati AWS Glue multi-account. Per ulteriori informazioni, consultaEffettuare una chiamata API multi-account.
Informazioni correlate
Leggi una tabella Iceberg da Amazon S3 utilizzando Spark