

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Trabajar con una jerarquía de varios catálogos en AWS Glue Data Catalog with Spark en Amazon EMR
<a name="emr-multi-catalog"></a>

Puede registrar su clúster de Amazon EMR para acceder al catálogo de datos de AWS Glue, que pone las tablas y otros recursos del catálogo a disposición de varios consumidores. AWS Glue Data Catalog admite una jerarquía de varios catálogos, que unifica los datos en los lagos de datos de Amazon S3. También proporciona una API del metastore de Hive y una API REST de Apache Iceberg de código abierto para acceder a los datos. Estas características están disponibles para Amazon EMR y otros servicios como Amazon Athena y Amazon Redshift.

## Cómo se organizan los recursos del catálogo
<a name="emr-lakehouse-org"></a>

Al crear recursos en el catálogo de datos de AWS Glue, puede acceder a ellos desde cualquier motor SQL que admita la API REST de Apache Iceberg o el metaalmacén de Hive. AWS Lake Formation gestiona los permisos.

En AWS Glue Data Catalog, los datos se organizan en una jerarquía lógica de catálogos, bases de datos y tablas:
+ **Catálogo**: contenedor lógico que contiene objetos de un almacén de datos, como esquemas o tablas. 
+ **Catálogo para almacenar tablas de Redshift Managed Storage (RMS)**: cuando administra catálogos para almacenar tablas RMS, puede acceder a esas tablas mediante Iceberg. 
+ **Base de datos**: organiza los objetos de datos de un catálogo, como tablas y vistas.
+ **Tablas y vistas**: objetos de datos de una base de datos que proporcionan una capa de abstracción con un esquema comprensible. Proporcionan una capa para acceder a datos en distintos formatos y ubicaciones.



## Configuración de un catálogo de datos para usarlo con Amazon EMR
<a name="emr-lakehouse-configuration"></a>

Para comenzar, debe configurar el catálogo para que admita las herramientas de Amazon EMR. El catálogo de datos de AWS Glue es compatible con Hive Metastore y con Iceberg REST. APIs 

**Configuración de Amazon EMR con un metalmacén de Hive**

 Para obtener información sobre cómo configurarlo, consulta la [compatibilidad del catálogo de datos de AWS Glue para trabajos de Spark](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-data-catalog-hive.html) en la Guía del usuario de AWS Glue. En este tema se describe cómo configurar el catálogo de datos de AWS Glue como un metaalmacén de Hive y hacer que esté disponible como punto final. Además, hay documentación de Amazon EMR disponible que muestra cómo especificar el catálogo de datos de AWS Glue como un metaalmacén de Spark, en Use [the AWS Glue Data Catalog como metastore de Apache Hive](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-glue.html) para Spark.

## Permisos para acceder a los recursos del catálogo de datos de AWS Glue
<a name="emr-lakehouse-using-irc-prereqs"></a>

En esta sección, se describen los requisitos de políticas de IAM para usar las herramientas de Amazon EMR con datos del catálogo. Tras registrar el clúster en el catálogo de datos de AWS Glue, necesitará los siguientes permisos para descubrir la creación y los cambios en el catálogo de datos creado posteriormente: 
+ **pegamento: GetCatalog**
+ **pegamento: GetCatalogs**
+ **conjuntos: AssumeRole**
+ **conjuntos: TagSession**
+ **conjuntos: SetContext**
+ **conjuntos: SetSourceIdentity**

En la mayoría de los casos, recomendamos crear un rol de IAM y asignarle los permisos necesarios.

Además, para consultar datos del catálogo, usted debe establecer permisos para el catálogo mediante AWS Lake Formation. Para más información sobre cómo establecer permisos en catálogos de datos mediante AWS Lake Formation, consulte [Granting and revoking permissions on Data Catalog resources](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-catalog-permissions.html).

Una vez que configure su clúster y defina los permisos sobre los objetos del catálogo, puede enviar trabajos para consultar y procesar datos.

## Configurar Spark para acceder a una jerarquía de varios catálogos en AWS Glue Data Catalog
<a name="emr-lakehouse-using-spark-access"></a>

Con EMR 7.5, puedes configurar Spark para que utilice la jerarquía multicálogos de AWS Glue. Una jerarquía de múltiples catálogos permite:
+ Lleve sus datos de Redshift Managed Storage (RMS), como tablas, vistas y vistas materializadas de los almacenes de datos de Amazon Redshift existentes, a Glue Data Catalog. AWS Puede consultar estos objetos desde EMR on EC2 y EMR sin servidor. 
+ Cree catálogos RMS, AWS Glue Data Catalog y almacene datos en RMS con ZeroETL y consulte los datos con motores de consulta compatibles con Iceberg.
+ Cree tablas Iceberg gestionadas en AWS Glue Data Catalog con una gestión de almacenamiento completa que incluye compactación, instantáneas y retención.

### Conexión con varios catálogos al iniciar una sesión de Spark
<a name="emr-iceberg-initialize-spark-session-spark"></a>

Los siguientes ejemplos muestran cómo usar Spark shell interactivo, Spark submit o Amazon EMR Notebooks para trabajar AWS con la jerarquía de múltiples catálogos de Glue.

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

1. Conéctese al nodo principal utilizando SSH. Para obtener más información, consulte [Conexión al nodo maestro mediante SSH](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-ssh.html) en la *Guía de administración de Amazon EMR*.

1. Introduzca el siguiente comando para iniciar el shell de Spark. Para usar la PySpark carcasa, sustitúyala por. `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. Conéctese al nodo principal utilizando SSH. Para obtener más información, consulte [Conexión al nodo maestro mediante SSH](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-ssh.html) en la *Guía de administración de Amazon EMR*.

1. Ingrese el siguiente comando para iniciar la sesión de Spark para 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 ]

Para iniciar una sesión de Spark con los Cuadernos de Amazon EMR, configure su sesión de Spark con el comando mágico `%%configure` de su cuaderno de Amazon EMR, como en el siguiente ejemplo. Para obtener más información, consulte [Usar la magia de Cuadernos de Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-magics.html#emr-magics) en la *Guía de administración de 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 ]

Para inicializar una sesión de Spark mediante la CLI, ejecute el siguiente ejemplo. Para obtener más información sobre cómo especificar una clasificación de configuración mediante la AWS CLI API de Amazon EMR, consulte [Configurar](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html) aplicaciones.

```
[
  {
    "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"
    }
  }
]
```

------

#### Inicie una sesión de Spark en Redshift Managed Storage con AWS Glue Data Catalog
<a name="considerations-multi-catalog-glue-connect"></a>

El siguiente ejemplo inicia una sesión de Spark con el Catálogo de datos de AWS Glue.

```
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
```

El siguiente ejemplo inicializa una sesión de Spark con la API REST de Iceberg y Redshift Managed Storage with Glue AWS Data Catalog.

```
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
```

Para obtener más información sobre el uso de una jerarquía de catálogos múltiples de AWS Glue con Spark Iceberg, consulta [Usar un clúster de Iceberg](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-iceberg-use-spark-cluster.html) con Spark.

## Consideraciones y limitaciones para una configuración con varios catálogos
<a name="considerations-multi-catalog"></a>
+ Una jerarquía de varios catálogos no admite el metalmacén de Apache Hive.
+ Una jerarquía de varios catálogos con Apache Iceberg no permite recurrir al metalmacén de Apache Hive cuando se usa `SparkSessionCatalog`.
+ Los clústeres de EMR en EC2 con rol de tiempo de ejecución no admiten jerarquías de varios catálogos.
+ Los EMR en los clústeres de EC2 habilitados AWS Lake Formation no admiten la jerarquía de varios catálogos.