

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzo di una gerarchia multicatalogo in AWS Glue Data Catalog with Spark su Amazon EMR
<a name="emr-multi-catalog"></a>

Puoi registrare il tuo cluster Amazon EMR per accedere al AWS Glue Data Catalog, che rende disponibili tabelle e altre risorse del catalogo a vari consumatori. AWS Glue Data Catalog supporta una gerarchia multicatalogo, che unifica i dati tra i data lake Amazon S3. Fornisce inoltre sia un'API metastore Hive che un'API REST Apache Iceberg open source per l'accesso ai dati. Queste funzionalità sono disponibili per Amazon EMR e altri servizi come Amazon Athena Amazon Redshift.

## Come sono organizzate le risorse del catalogo
<a name="emr-lakehouse-org"></a>

Quando crei risorse nel AWS Glue Data Catalog, puoi accedervi da qualsiasi motore SQL che supporti l'API REST di Apache Iceberg o il metastore Hive. AWS Lake Formation gestisce le autorizzazioni.

In AWS Glue Data Catalog, i dati sono organizzati in una gerarchia logica di cataloghi, database e tabelle:
+ **Catalogo**: un contenitore logico che contiene oggetti provenienti da un archivio dati, come schemi o tabelle. 
+ **Catalogo per archiviare le tabelle Redshift Managed Storage (RMS)** — Quando gestisci i cataloghi per archiviare le tabelle RMS, puoi accedere a queste tabelle utilizzando Iceberg. 
+ **Database**: organizza oggetti di dati come tabelle e viste in un catalogo.
+ **Tabelle e viste**: oggetti di dati in un database che forniscono un livello di astrazione con uno schema comprensibile. Forniscono un livello per accedere ai dati sottostanti, che possono essere in vari formati e in diverse posizioni.



## Configurazione di un catalogo di dati da utilizzare con Amazon EMR
<a name="emr-lakehouse-configuration"></a>

Per iniziare, configura il catalogo per supportare gli strumenti di Amazon EMR. Il AWS Glue Data Catalog offre la compatibilità con i metastore Hive e la compatibilità con Iceberg REST. APIs 

**Configurazione di Amazon EMR con un metastore Hive**

 Per informazioni su come configurarlo, consulta il [supporto di AWS Glue Data Catalog per i job Spark](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-data-catalog-hive.html) nella AWS Glue User Guide. Questo argomento descrive come configurare AWS Glue Data Catalog come metastore Hive e renderlo disponibile come endpoint. Inoltre, è disponibile la documentazione di Amazon EMR che mostra come specificare AWS Glue Data Catalog come metastore Spark, in Use [the AWS Glue Data Catalog come metastore Apache](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-glue.html) Hive per Spark.

## Autorizzazioni per l'accesso alle risorse in AWS Glue Data Catalog
<a name="emr-lakehouse-using-irc-prereqs"></a>

Questa sezione descrive i requisiti delle policy IAM per l'utilizzo degli strumenti Amazon EMR con i dati del catalogo. Dopo aver registrato il cluster nel AWS Glue Data Catalog, sono necessarie le seguenti autorizzazioni per scoprire la creazione e le modifiche al catalogo di dati creato successivamente: 
+ **colla: GetCatalog**
+ **colla: GetCatalogs**
+ **set: AssumeRole**
+ **set: TagSession**
+ **set: SetContext**
+ **set: SetSourceIdentity**

Nella maggior parte dei casi, quando assegni le autorizzazioni, ti consigliamo di creare un ruolo IAM e di assegnargli le autorizzazioni.

Inoltre, per interrogare i dati del catalogo, è necessario impostare le autorizzazioni per l'utilizzo del catalogo di dati. AWS Lake Formation Per ulteriori informazioni sull'impostazione delle autorizzazioni per i cataloghi di dati in AWS Lake Formation, consulta [Concessione e revoca](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-catalog-permissions.html) delle autorizzazioni per le risorse del Catalogo dati.

Dopo aver creato e configurato il cluster e impostato le autorizzazioni per gli oggetti del catalogo, puoi inviare lavori per interrogare ed elaborare i dati.

## Configura Spark per accedere a una gerarchia multicatalogo in AWS Glue Data Catalog
<a name="emr-lakehouse-using-spark-access"></a>

Con EMR 7.5, puoi configurare Spark per utilizzare la gerarchia multicatalogo di AWS Glue. Una gerarchia multicatalogo ti consente di:
+ Trasferisci i tuoi dati Redshift Managed Storage (RMS), come tabelle, viste e viste materializzate dai data warehouse Amazon Redshift esistenti, a Glue Data Catalog. AWS È possibile interrogare questi oggetti utilizzando EMR su EC2 ed EMR Serverless. 
+ Crea cataloghi RMS, AWS Glue Data Catalog e archivia i dati in RMS utilizzando ZeroETL e interroga i dati con motori di query compatibili con Iceberg.
+ Crea tabelle Iceberg gestite in AWS Glue Data Catalog con una gestione dello storage completa che include compattazione, istantanee e conservazione.

### Connessione a multicatalogo quando inizializzi una sessione Spark
<a name="emr-iceberg-initialize-spark-session-spark"></a>

Gli esempi seguenti mostrano come utilizzare la shell interattiva Spark, Spark submit o Amazon EMR Notebooks per lavorare con la gerarchia multicatalogo di Glue. AWS 

------
#### [ spark-shell ]

1. Connessione al nodo master tramite SSH Per ulteriori informazioni, consulta [Connessione al nodo master tramite SSH](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-ssh.html) nella *Guida alla gestione di Amazon EMR*.

1. Immettere il seguente comando per avviare la shell Spark. Per usare la shell, sostituiscila con. PySpark `spark-shell` `pyspark`

   ```
   spark-shell \
       --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=Glue RMS catalog ID \
       --conf spark.sql.defaultCatalog=my_catalog \
       --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
   ```

------
#### [ spark-submit ]

1. Connessione al nodo master tramite SSH Per ulteriori informazioni, consulta [Connessione al nodo master tramite SSH](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-ssh.html) nella *Guida alla gestione di Amazon EMR*.

1. Inserisci il seguente comando per avviare la sessione Spark per Spark.

   ```
   spark-submit \
   --conf spark.sql.catalog.my_catalog=org.apache.iceberg.spark.SparkCatalog \
   --conf spark.sql.catalog.my_catalog.warehouse=s3://amzn-s3-demo-bucket1/prefix \
   --conf spark.sql.catalog.my_catalog.type=glue \
   --conf spark.sql.catalog.my_catalog.glue.id=Glue RMS catalog ID \
   --conf spark.sql.defaultCatalog=my_catalog \
   --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
   ```

------
#### [ EMR Studio notebooks ]

Per inizializzare una sessione Spark utilizzando i notebook EMR Studio, configurare la sessione Spark utilizzando il comando magico `%%configure` sul tuo notebook Amazon EMR, come nell'esempio seguente. Per ulteriori informazioni, consulta [Utilizzo di EMR Notebooks magics](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-magics.html#emr-magics) nella *Guida alla gestione di Amazon EMR*.

```
%%configure -f{
"conf":{
    "spark.sql.catalog.my_catalog":"org.apache.iceberg.spark.SparkCatalog",
    "spark.sql.catalog.my_catalog.type":"glue",
    "spark.sql.catalog.my_catalog.glue.id":"Glue RMS catalog ID",
    "spark.sql.catalog.my_catalog.warehouse":"s3://amzn-s3-demo-bucket1/prefix/",
    "spark.sql.defaultCatalog", "my_catalog",
    "spark.sql.extensions":"org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions"
    }
}
```

------
#### [ CLI ]

Per inizializzare una sessione Spark utilizzando la CLI, esegui il seguente esempio. Per ulteriori informazioni su come specificare una classificazione di configurazione utilizzando l' AWS CLI API Amazon EMR, [consulta](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html) Configurare le applicazioni.

```
[
  {
    "Classification": "spark-defaults",
    "Properties": {
      "spark.sql.catalog.my_catalog":"org.apache.iceberg.spark.SparkCatalog",
      "spark.sql.catalog.my_catalog.type":"glue",
      "spark.sql.catalog.my_catalog.glue.id":"Glue RMS catalog ID",
      "spark.sql.catalog.my_catalog.warehouse":"s3://amzn-s3-demo-bucket1/prefix/",
      "spark.sql.defaultCatalog", "my_catalog",
      "spark.sql.extensions":"org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions"
    }
  }
]
```

------

#### Inizializza una sessione Spark su Redshift Managed Storage con Glue Data Catalog AWS
<a name="considerations-multi-catalog-glue-connect"></a>

Il seguente comando di esempio inizializza una sessione Spark con AWS Glue Data Catalog.

```
spark-sql \
  --conf spark.sql.catalog.rms=org.apache.iceberg.spark.SparkCatalog \
  --conf spark.sql.catalog.rms.type=glue \
  --conf spark.sql.catalog.rms.glue.id=Glue RMS catalog ID \
  --conf spark.sql.defaultCatalog=rms
  --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
```

L'esempio seguente inizializza una sessione Spark utilizzando l'API REST Iceberg e Redshift Managed Storage with Glue Data Catalog. AWS 

```
spark-sql \
  --conf spark.sql.catalog.rms=org.apache.iceberg.spark.SparkCatalog \
  --conf spark.sql.catalog.rms.type=rest \
  --conf spark.sql.catalog.rms.warehouse=glue RMS catalog ID \
  --conf spark.sql.catalog.rms.uri=Glue endpoint URI/iceberg \
  --conf spark.sql.catalog.rms.rest.sigv4-enabled=true \
  --conf spark.sql.catalog.rms.rest.signing-name=glue \
  --conf spark.sql.defaultCatalog=rms \
  --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
```

Per maggiori informazioni sull'utilizzo di una gerarchia multicatalogo AWS Glue con Spark Iceberg, consulta [Usare un cluster Iceberg](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-iceberg-use-spark-cluster.html) con Spark.

## Considerazioni e limitazioni per una configurazione multicatalogo
<a name="considerations-multi-catalog"></a>
+ L'utilizzo di una gerarchia multicatalogo con Apache Hive metastore non è supportato.
+ L'utilizzo di una gerarchia multicatalogo con Apache Iceberg non può supportare il fallback su Apache Hive metastore, quando si utilizza. `SparkSessionCatalog`
+ EMR sui cluster EC2 con ruolo Runtime non supporta la gerarchia multicatalogo.
+ EMR sui cluster EC2 abilitati con AWS Lake Formation non supporta la gerarchia multicatalogo.