

# Cómo acceder al Catálogo de datos
<a name="access_catalog"></a>

 Puede usar el AWS Glue Data Catalog (Catálogo de datos) para detectar y comprender sus datos. El Catálogo de datos proporciona una forma coherente de mantener las definiciones de los esquemas, los tipos de datos, las ubicaciones y otros metadatos. Puede acceder al Catálogo de datos mediante los siguientes métodos:
+ Consola de AWS Glue: Puede acceder al Catálogo de datos y administrarlo por medio de la consola de AWS Glue, una interfaz de usuario en línea. La consola le permite explorar y buscar bases de datos, tablas y sus metadatos asociados, así como crear, actualizar y eliminar definiciones de metadatos. 
+ Rastreador de AWS Glue: Los rastreadores son programas que escanean automáticamente los orígenes de datos y completan el Catálogo de datos con metadatos. Puede crear y ejecutar rastreadores para detectar y catalogar datos de diversas fuentes, como Amazon S3, Amazon RDS, Amazon DynamoDB, Amazon CloudWatch y bases de datos relacionales que cumplen los requisitos de JDBC, como MySQL y PostgreSQL, así como de varias fuentes ajenas a AWS, como Snowflake y Google BigQuery.
+ API de AWS Glue: Puede acceder al Catálogo de datos por medio de programación mediante las API de AWS Glue. Estas API le permiten interactuar con el Catálogo de datos por medio de programación, lo que permite la automatización y la integración con otras aplicaciones y servicios. 
+ AWS Command Line Interface (AWS CLI): Puede usar la AWS CLI para acceder al Catálogo de datos y administrarlo desde la línea de comandos. La CLI proporciona comandos para crear, actualizar y eliminar definiciones de metadatos, así como para consultar y recuperar información de metadatos. 
+ Integración con otros servicios de AWS: El Catálogo de datos se integra con otros servicios de AWS, lo que le permite acceder a los metadatos almacenados en el Catálogo y usarlos. Por ejemplo, puede usar Amazon Athena para consultar orígenes de datos mediante los metadatos del Catálogo de datos y usar AWS Lake Formation para administrar el acceso a los datos y la gobernanza de los recursos del Catálogo. 

**Topics**
+ [

# Conexión al catálogo de datos mediante el punto de conexión de REST de AWS Glue Iceberg
](connect-glu-iceberg-rest.md)
+ [

# Conexión al catálogo de datos mediante el punto de conexión de la extensión de REST de AWS Glue Iceberg
](connect-glue-iceberg-rest-ext.md)
+ [

# Especificaciones de las API de REST de AWS Glue para Apache Iceberg
](iceberg-rest-apis.md)
+ [

# Conexión al catálogo de datos desde una aplicación Spark independiente
](connect-gludc-spark.md)
+ [

# Asignación de datos entre Amazon Redshift y Apache Iceberg
](data-mapping-rs-iceberg.md)
+ [

# Consideraciones y limitaciones al utilizar las API del catálogo de REST de Iceberg AWS Glue
](limitation-glue-iceberg-rest-api.md)

# Conexión al catálogo de datos mediante el punto de conexión de REST de AWS Glue Iceberg
<a name="connect-glu-iceberg-rest"></a>

 El punto de conexión de REST de Iceberg de AWS Glue admite las operaciones de API indicadas en la especificación REST de Apache Iceberg. Si usa un cliente de REST de Iceberg, puede conectar la aplicación que se ejecuta en un motor de análisis al catálogo de REST hospedado en el catálogo de datos.

 El punto de conexión es compatible con las dos especificaciones de la tabla de Apache Iceberg, v1 y v2; de forma predeterminada, se usará v2. Si utiliza la especificación v1 de la tabla de Iceberg, debe especificar v1 en la llamada a la API. Mediante la operación de API, puede acceder a las tablas de Iceberg que se guardan tanto en el almacenamiento de objetos de Amazon S3 como en el almacenamiento de tablas de Amazon S3. 

**Configuración de puntos de conexión**

Puede acceder al catálogo de REST de AWS Glue Iceberg con el punto de conexión del servicio. Consulte la [guía de referencia de puntos de conexión de servicio de AWS Glue](https://docs.aws.amazon.com/general/latest/gr/glue.html#glue_region) para el punto de conexión específico de la región. Por ejemplo, si conecta AWS Glue a la región us-east-1, debe configurar la propiedad URI del punto de conexión como se indica a continuación: 

```
Endpoint : https://glue.us-east-1.amazonaws.com/iceberg
```

**Propiedades de configuración adicionales**: cuando se utiliza el cliente Iceberg para conectar un motor de análisis como Spark al punto de conexión del servicio, es necesario especificar las siguientes propiedades de configuración de la aplicación:

```
catalog_name = "mydatacatalog"
aws_account_id = "123456789012"
aws_region = "us-east-1"
spark = SparkSession.builder \
    ... \
    .config("spark.sql.defaultCatalog", catalog_name) \
    .config(f"spark.sql.catalog.{catalog_name}", "org.apache.iceberg.spark.SparkCatalog") \
    .config(f"spark.sql.catalog.{catalog_name}.type", "rest") \
    .config(f"spark.sql.catalog.{catalog_name}.uri", "https://glue.{aws_region}.amazonaws.com/iceberg") \
    .config(f"spark.sql.catalog.{catalog_name}.warehouse", "{aws_account_id}") \
    .config(f"spark.sql.catalog.{catalog_name}.rest.sigv4-enabled", "true") \
    .config(f"spark.sql.catalog.{catalog_name}.rest.signing-name", "glue") \    
    .config("spark.sql.extensions","org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \
    .getOrCreate()
```

El punto de conexión de Iceberg de AWS Glue, ` https://glue.us-east-1.amazonaws.com/iceberg`, admite las siguientes API de REST de Iceberg:
+ GetConfig
+ ListNamespaces
+ CreateNamespace
+ LoadNamespaceMetadata
+ UpdateNamespaceProperties
+ DeleteNamespace
+ ListTables
+ CreateTable
+ LoadTable
+ TableExists
+ UpdateTable
+ DeleteTable

## Parámetros de prefijo y ruta de catálogo
<a name="prefix-catalog-path-parameters"></a>

Las API del catálogo de REST de Iceberg tienen un prefijo de formato libre en las URL de solicitud. Por ejemplo, la llamada a la API `ListNamespaces` usa el formato URL`GET/v1/{prefix}/namespaces`. El prefijo AWS Gluesiempre sigue la estructura `/catalogs/{catalog}` para garantizar que la ruta de REST alinee la jerarquía de varios catálogos de AWS Glue. El parámetro `{catalog}` de ruta se puede derivar en función de las siguientes reglas:


| **Patrón de acceso** |  **Estilo de ID de catálogo de Glue**  |  **Estilo de prefijo**  | **Ejemplo de ID de catálogo predeterminado** |  **Ejemplo de ruta de REST**  | 
| --- | --- | --- | --- | --- | 
|  Acceda al catálogo predeterminado en la cuenta actual  | No obligatorio | : |  no aplicable  |  GET /v1/catalogs/:/namespaces  | 
|  Acceso al catálogo predeterminado en una cuenta específica  | accountID | accountID | 111122223333 | GET /v1/catalogs/111122223333/namespaces | 
|  Acceda al catálogo anidado en la cuenta actual  |  catalog1/catalog2  |  catalog1/catalog2  |  rmscatalog1:db1  |  GET /v1/catalogs/rmscatalog1:db1/namespaces  | 
|  Acceso a un catálogo anidado en una cuenta específica  |  accountId:catalog1/catalog2  |  accountId:catalog1/catalog2  |  123456789012/rmscatalog1:db1  |  GET /v1/catalogs/123456789012:rmscatalog1:db1/namespaces  | 

Esta asignación de identificador de catálogo a prefijo solo es necesaria cuando se llama directamente a las API de REST. Si trabaja con las API del catálogo REST de Iceberg de AWS Glue a través de un motor, debe especificar el ID del catálogo de AWS Glue en el parámetro `warehouse` de la configuración de la API del catálogo REST de Iceberg o en el parámetro `glue.id` de la configuración de la API de extensiones de AWS Glue. Por ejemplo, vea cómo puede usarlo con EMR Spark en [Use an Iceberg clúster with Spark](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-iceberg-use-spark-cluster.html).

## Parámetro de ruta de espacio de nombres
<a name="ns-path-param"></a>

La ruta de API del catálogo de REST de Iceberg para espacios de nombres puede tener varios niveles. Sin embargo, AWS Glue solo admite espacios de nombres de un solo nivel. Para acceder a un espacio de nombres en una jerarquía de catálogos de varios niveles, puede conectarse a un catálogo de varios niveles situado encima del espacio de nombres para hacer referencia al espacio de nombres. Esto permite a cualquier motor de consultas que admita la notación de tres partes de `catalog.namespace.table` acceder a los objetos en la jerarquía del catálogo de varios niveles de AWS Glue sin problemas de compatibilidad, en comparación con el uso del espacio de nombres de varios niveles.

# Conexión al catálogo de datos mediante el punto de conexión de la extensión de REST de AWS Glue Iceberg
<a name="connect-glue-iceberg-rest-ext"></a>

 El punto de conexión de la extensión de REST de AWS Glue Iceberg proporciona API adicionales, que no están presentes en la especificación REST de Apache Iceberg; además, otorga funciones de planificación de escaneo del servidor. Estas API adicionales se utilizan al acceder a las tablas que se guardan en el almacenamiento gestionado de Amazon Redshift. El punto de conexión es accesible desde una aplicación que utiliza extensiones AWS Glue Data Catalog de Apache Iceberg. 

**Configuración del punto de conexión**: se puede acceder a un catálogo con tablas en el almacenamiento administrado de Redshift mediante el punto de conexión del servicio. Consulte la [guía de referencia de puntos de conexión de servicio de AWS Glue](https://docs.aws.amazon.com/general/latest/gr/glue.html#glue_region) para el punto de conexión específico de la región. Por ejemplo, si conecta AWS Glue a la región us-east-1, debe configurar la propiedad URI del punto de conexión como se indica a continuación:

```
Endpoint : https://glue.us-east-1.amazonaws.com/extensions
```

```
catalog_name = "myredshiftcatalog"
aws_account_id = "123456789012"
aws_region = "us-east-1"
spark = SparkSession.builder \
    .config("spark.sql.defaultCatalog", catalog_name) \
    .config(f"spark.sql.catalog.{catalog_name}", "org.apache.iceberg.spark.SparkCatalog") \
    .config(f"spark.sql.catalog.{catalog_name}.type", "glue") \
    .config(f"spark.sql.catalog.{catalog_name}.glue.id", "{123456789012}:redshiftnamespacecatalog/redshiftdb") \
    .config("spark.sql.extensions","org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \
    .getOrCreate()
```

# Especificaciones de las API de REST de AWS Glue para Apache Iceberg
<a name="iceberg-rest-apis"></a>

Esta sección contiene especificaciones sobre el catálogo REST Iceberg de AWS Glue y las API de extensión de AWS Glue, así como consideraciones sobre el uso de estas API. 

Las solicitudes de API a los puntos de conexión de AWS Glue Data Catalog se autentican mediante AWS Signature Version 4 (SigV4). Consulte la sección de [solicitudes de API de la versión de firma 4 de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) para obtener más información sobre SigV4 de AWS.

Al acceder al punto de conexión del servicio AWS Glue y a los metadatos de AWS Glue, la aplicación asume un rol de IAM que requiere una acción de IAM `glue:getCatalog`. 

El acceso al Catálogo de Datos y sus objetos puede gestionarse mediante IAM, Lake Formation o permisos en modo híbrido de Lake Formation.

Los catálogos federados en el catáogo de datos tienen ubicaciones de datos registradas en Lake Formation. Lake Formation trabaja con el catálogo de datos y proporciona permisos similares a los de una base de datos para administrar el acceso de los usuarios a los objetos del catálogo de datos. 

Puede usar IAM, AWS Lake Formation o los permisos de modo híbrido de Lake Formation para administrar el acceso al catálogo de datos predeterminado y sus objetos. 

Para crear, insertar o eliminar datos en objetos administrados por Lake Formation, debes configurar permisos específicos para el usuario o rol de IAM. 
+ CREATE\$1CATALOG: es necesario para crear catálogos 
+ CREATE\$1DATABASE: es necesario para crear bases de datos
+ CREATE\$1TABLE: es necesario para crear tablas
+ DELETE: es necesario para eliminar datos de una tabla
+ DESCRIBE: es necesario para leer los metadatos 
+ DROP: es necesario para eliminar una tabla o base de datos
+ INSERT: es necesario cuando la entidad principal debe insertar datos en una tabla
+ SELECT: es necesario cuando la entidad principal necesita seleccionar datos de una tabla

Para obtener más información, consulte [Lake Formation permissions reference](https://docs.aws.amazon.com/lake-formation/latest/dg/lf-permissions-reference.html) en la Guía para desarrolladores de AWS Lake Formation.

# GetConfig
<a name="get-config"></a>


**Información general**  

|  |  | 
| --- |--- |
| Nombre de operación | GetConfig | 
| Tipo |  API del catálogo de REST de Iceberg  | 
| Ruta de REST |  GET /iceberg/v1/config  | 
| Acción de IAM |  glue:GetCatalog  | 
| Permisos de Lake Formation | No aplicable | 
| Evento de CloudTrail |  glue:GetCatalog  | 
| Definición de API abierta | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L67 | 

****Consideraciones y limitaciones****
+ El parámetro de consulta `warehouse` debe establecerse en el ID del catálogo AWS Glue. Si no se establece, se utiliza el catálogo raíz de la cuenta actual para devolver la respuesta. Para obtener más información, consulte [Parámetros de prefijo y ruta de catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).

# GetCatalog
<a name="get-catalog"></a>


**Información general**  

|  |  | 
| --- |--- |
| nombre de operación | GetCatalog | 
| Tipo |  API de extensión AWS Glue  | 
| Ruta de REST |  GET/extensions/v1/catalogs/\$1catalog\$1  | 
| Acción de IAM |  glue:GetCatalog  | 
| Permisos de Lake Formation | DESCRIBE | 
| Evento de CloudTrail |  glue:GetCatalog  | 
| Definición de API abierta | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml\$1L40 | 

****Consideraciones y limitaciones****
+ El parámetro de ruta del catálogo debe seguir el estilo descrito en la sección [Parámetros de prefijo y ruta de catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).

# ListNamespaces
<a name="list-ns"></a>


**Información general**  

|  |  | 
| --- |--- |
| Nombre de operación | ListNamespaces | 
| Tipo |  API del catálogo de REST de Iceberg  | 
| Ruta de REST |  GET/iceberg/v1/catalogs/\$1catalog\$1/namespaces  | 
| Acción de IAM |  glue:GetDatabase  | 
| Permisos de Lake Formation | ALL, DESCRIBE, SELECT | 
| Evento de CloudTrail |  glue:GetDatabase  | 
| Definición de API abierta | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L205 | 

****Consideraciones y limitaciones****
+ El parámetro de ruta del catálogo debe seguir el estilo descrito en la sección [Parámetros de prefijo y ruta de catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ Solo se muestran los espacios de nombres del siguiente nivel. Para listar los espacios de nombres en niveles más profundos, especifique el ID del catálogo anidado en el parámetro de ruta del catálogo.

# CreateNamespace
<a name="create-ns"></a>


**Información general**  

|  |  | 
| --- |--- |
| Nombre de operación | CreateNamespace | 
| Tipo |  API del catálogo de REST de Iceberg  | 
| Ruta de REST |  POST/iceberg/v1/catalogs/\$1catalog\$1/namespaces  | 
| Acción de IAM |  glue:CreateDatabase  | 
| Permisos de Lake Formation | ALL, DESCRIBE, SELECT | 
| Evento de CloudTrail |  glue:CreateDatabase  | 
| Definición de API abierta | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L256 | 

****Consideraciones y limitaciones****
+ El parámetro de ruta del catálogo debe seguir el estilo descrito en la sección [Parámetros de prefijo y ruta de catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ Solo se puede crear un espacio de nombres de un solo nivel. Para crear un espacio de nombres de varios niveles, debe crear cada nivel de forma iterativa y conectarse al nivel mediante el parámetro de ruta del catálogo.

# StartCreateNamespaceTransaction
<a name="start-create-ns-transaction"></a>


**Información general**  

|  |  | 
| --- |--- |
| Nombre de operación | StartCreateNamespaceTransaction | 
| Tipo |  API de extensiones AWS Glue  | 
| Ruta de REST |  POST/extensions/v1/catalogs/\$1catalog\$1/namespaces  | 
| Acción de IAM |  glue:CreateDatabase  | 
| Permisos de Lake Formation | ALL, DESCRIBE, SELECT | 
| Evento de CloudTrail |  glue:CreateDatabase  | 
| Definición de API abierta | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L256 | 

****Consideraciones y limitaciones****
+ El parámetro de ruta del catálogo debe seguir el estilo descrito en la sección [Parámetros de prefijo y ruta de catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ Solo puede crear un espacio de nombres de un solo nivel. Para crear espacios de nombres de varios niveles, debe crear cada nivel de forma iterativa y conectarse al nivel mediante el parámetro de ruta del catálogo.
+ La API es asíncrona y devuelve un identificador de transacción que puede usar para realizar un seguimiento mediante la llamada a la API `CheckTransactionStatus`.
+  Puedes llamar a esta API solo si la llamada a la API `GetCatalog` contiene el parámetro `use-extensions=true` en la respuesta. 

## LoadNamespaceMetadata
<a name="load-ns-metadata"></a>


**Información general**  

|  |  | 
| --- |--- |
| Nombre de operación | LoadNamespaceMetadata | 
| Tipo |  API del catálogo de REST de Iceberg  | 
| Ruta de REST |  GET/iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1  | 
| Acción de IAM |  glue:GetDatabase  | 
| Permisos de Lake Formation | ALL, DESCRIBE, SELECT | 
| Evento de CloudTrail |  glue:GetDatabase  | 
| Definición de API abierta | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L302 | 

****Consideraciones y limitaciones****
+ El parámetro de ruta del catálogo debe seguir el estilo descrito en la sección [Parámetros de prefijo y ruta de catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ Solo puede especificar un espacio de nombres de un solo nivel en el parámetro de ruta de REST. Para obtener más información, consulte la sección [Parámetro de ruta de espacio de nombres](connect-glu-iceberg-rest.md#ns-path-param).

## UpdateNamespaceProperties
<a name="w2aac20c29c16c21c13"></a>


**Información general**  

|  |  | 
| --- |--- |
| Nombre de operación | UpdateNamespaceProperties | 
| Tipo |  API del catálogo de REST de Iceberg  | 
| Ruta de REST |  POST /iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/properties  | 
| Acción de IAM |  glue:UpdateDatabase  | 
| Permisos de Lake Formation | ALL, ALTER | 
| Evento de CloudTrail |  glue:UpdateDatabase  | 
| Definición de API abierta | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L400 | 

****Consideraciones y limitaciones****
+ El parámetro de ruta del catálogo debe seguir el estilo descrito en la sección [Parámetros de prefijo y ruta de catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ Solo puede especificar un espacio de nombres de un solo nivel en el parámetro de ruta de REST. Para obtener más información, consulte la sección [Parámetro de ruta de espacio de nombres](connect-glu-iceberg-rest.md#ns-path-param).

# DeleteNamespace
<a name="delete-ns"></a>


**Información general**  

|  |  | 
| --- |--- |
| Nombre de operación | DeleteNamespace | 
| Tipo |  API del catálogo de REST de Iceberg  | 
| Ruta de REST |  DELETE/iceberg/v1/catalogs/\$1catalog\$1/namespces/\$1ns\$1  | 
| Acción de IAM |  glue:DeleteDatabase  | 
| Permisos de Lake Formation | ALL, DROP | 
| Evento de CloudTrail |  glue:DeleteDatabase  | 
| Definición de API abierta | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L365 | 

****Consideraciones y limitaciones****
+ El parámetro de ruta del catálogo debe seguir el estilo descrito en la sección [Parámetros de prefijo y ruta de catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ Solo puede especificar un espacio de nombres de un solo nivel en el parámetro de ruta de REST. Para obtener más información, consulte la sección [Parámetro de ruta de espacio de nombres](connect-glu-iceberg-rest.md#ns-path-param).
+ Si hay objetos en la base de datos, la operación fallará.
+ La API es asíncrona y devuelve un identificador de transacción que puede usar para realizar un seguimiento mediante la llamada a la API `CheckTransactionStatus`.
+  La API solo se puede usar si la llamada a la API `GetCatalog` indica `use-extensions=true` en la respuesta. 

# StartDeleteNamespaceTransaction
<a name="start-delete-ns-transaction"></a>


**Información general**  

|  |  | 
| --- |--- |
| Nombre de operación | StartDeleteNamespaceTransaction | 
| Tipo |  API de extensiones AWS Glue  | 
| Ruta de REST |  DELETE /extensions/v1/catalogs/\$1catalog\$1/namespces/\$1ns\$1  | 
| Acción de IAM |  glue:DeleteDatabase  | 
| Permisos de Lake Formation | ALL, DROP | 
| Evento de CloudTrail |  glue:DeleteDatabase  | 
| Definición de API abierta | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml\$1L85 | 

****Consideraciones y limitaciones****
+ El parámetro de ruta del catálogo debe seguir el estilo descrito en la sección [Parámetros de prefijo y ruta de catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ Solo puede especificar un espacio de nombres de un solo nivel en el parámetro de ruta REST. Para obtener más información, consulte la sección [Parámetro de ruta de espacio de nombres](connect-glu-iceberg-rest.md#ns-path-param).
+ Si hay objetos en la base de datos, la operación fallará.
+ La API es asíncrona y devuelve un identificador de transacción que puede usar para realizar un seguimiento mediante la llamada a la API `CheckTransactionStatus`.
+  La API solo se puede usar si la llamada a la API `GetCatalog` indica `use-extensions=true` en la respuesta. 

# ListTables
<a name="list-tables"></a>


**Información general**  

|  |  | 
| --- |--- |
| Nombre de operación | ListTables | 
| Tipo |  API del catálogo de REST de Iceberg  | 
| Ruta de REST |  GET /iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables  | 
| Acción de IAM |  glue:GetTable  | 
| Permisos de Lake Formation | ALL, SELECT, DESCRIBE | 
| Evento de CloudTrail |  glue:GetTable  | 
| Definición de API abierta | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L463 | 

****Consideraciones y limitaciones****
+ El parámetro de ruta del catálogo debe seguir el estilo descrito en la sección [Parámetros de prefijo y ruta de catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ Solo puede especificar un espacio de nombres de un solo nivel en el parámetro de ruta de REST. Para obtener más información, consulte la sección [Parámetro de ruta de espacio de nombres](connect-glu-iceberg-rest.md#ns-path-param).
+ Se listarán todas las tablas, incluidas las que no son de Iceberg. Para determinar si una tabla se puede cargar como una tabla de Iceberg o no, llame a la operación `LoadTable`.

# CreateTable
<a name="create-table"></a>


**Información general**  

|  |  | 
| --- |--- |
| Nombre de operación | CreateTable | 
| Tipo |  API del catálogo de REST de Iceberg  | 
| Ruta de REST |  GET /iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables  | 
| Acción de IAM |  glue:CreateTable  | 
| Permisos de Lake Formation | ALL, CREATE\$1TABLE | 
| Evento de CloudTrail |  glue:CreateTable  | 
| Definición de API abierta | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L497 | 

****Consideraciones y limitaciones****
+ El parámetro de ruta del catálogo debe seguir el estilo descrito en la sección [Parámetros de prefijo y ruta de catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ Solo puede especificar un espacio de nombres de un solo nivel en el parámetro de ruta de REST. Para obtener más información, consulte la sección [Parámetro de ruta de espacio de nombres](connect-glu-iceberg-rest.md#ns-path-param).
+ `CreateTable` con almacenamiento provisional no es compatible. Si se especifica el parámetro de consulta `stageCreate`, la operación fallará. Esto significa que no se admite una operación como `CREATE TABLE AS SELECT`, y el usuario debe utilizar una combinación de `CREATE TABLE` y `INSERT INTO` como solución alternativa.
+ La operación de la API `CreateTable` no admite la opción `state-create = TRUE`.

# StartCreateTableTransaction
<a name="start-create-table-transaction"></a>


**Información general**  

|  |  | 
| --- |--- |
| Nombre de operación | CreateTable | 
| Tipo |  API de extensiones AWS Glue  | 
| Ruta de REST |  POST/extensions/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables  | 
| Acción de IAM |  glue:CreateTable  | 
| Permisos de Lake Formation | ALL, CREATE\$1TABLE | 
| Evento de CloudTrail |  glue:CreateTable  | 
| Definición de API abierta | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml\$1L107 | 

****Consideraciones y limitaciones****
+ El parámetro de ruta del catálogo debe seguir el estilo descrito en la sección [Parámetros de prefijo y ruta de catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ Solo puede especificar un espacio de nombres de un solo nivel en el parámetro de ruta de REST. Para obtener más información, consulte la sección [Parámetro de ruta de espacio de nombres](connect-glu-iceberg-rest.md#ns-path-param).
+ `CreateTable` con almacenamiento provisional no es compatible. Si se especifica el parámetro de consulta `stageCreate`, la operación fallará. Esto significa que no se admite una operación como `CREATE TABLE AS SELECT`, y el usuario debe utilizar una combinación de `CREATE TABLE` y `INSERT INTO` como solución alternativa.
+ La API es asíncrona y devuelve un identificador de transacción que puede usar para realizar un seguimiento mediante la llamada a la API `CheckTransactionStatus`.
+  La API solo se puede usar si la llamada a la API `GetCatalog` indica `use-extensions=true` en la respuesta. 

# LoadTable
<a name="load-table"></a>


**Información general**  

|  |  | 
| --- |--- |
| Nombre de operación | LoadTable | 
| Tipo |  API del catálogo de REST de Iceberg  | 
| Ruta de REST |  GET /iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1  | 
| Acción de IAM |  glue:GetTable  | 
| Permisos de Lake Formation | ALL, SELECT, DESCRIBE | 
| evento de CloudTrail |  glue:GetTable  | 
| Definición de API abierta | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L616 | 

**Consideraciones**
+ El parámetro de ruta del catálogo debe seguir el estilo descrito en la sección [Parámetros de prefijo y ruta de catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ Solo puede especificar un espacio de nombres de un solo nivel en el parámetro de ruta de REST. Para obtener más información, consulte la sección [Parámetro de ruta de espacio de nombres](connect-glu-iceberg-rest.md#ns-path-param).
+ `CreateTable` con almacenamiento provisional no es compatible. Si se especifica el parámetro de consulta `stageCreate`, la operación fallará. Esto significa que no se admite una operación como `CREATE TABLE AS SELECT`, y el usuario debe utilizar una combinación de `CREATE TABLE` y `INSERT INTO` como solución alternativa.
+ La API es asíncrona y devuelve un identificador de transacción que puede usar para realizar un seguimiento mediante la llamada a la API `CheckTransactionStatus`.
+  La API solo se puede usar si la llamada a la API `GetCatalog` indica `use-extensions=true` en la respuesta. 

# ExtendedLoadTable
<a name="extended-load-table"></a>


**Información general**  

|  |  | 
| --- |--- |
| Nombre de operación | LoadTable | 
| Tipo |  API de extensiones AWS Glue  | 
| Ruta de REST |  GET /extensions/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1  | 
| Acción de IAM |  glue:GetTable  | 
| Permisos de Lake Formation | ALL, SELECT, DESCRIBE | 
| Evento de CloudTrail |  glue:GetTable  | 
| Definición de API abierta | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml\$1L134 | 

**Consideraciones**
+ El parámetro de ruta del catálogo debe seguir el estilo descrito en la sección [Parámetros de prefijo y ruta de catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ Solo puede especificar un espacio de nombres de un solo nivel en el parámetro de ruta de REST. Para obtener más información, consulte la sección [Parámetro de ruta de espacio de nombres](connect-glu-iceberg-rest.md#ns-path-param).
+ Solo se admite el modo `all` para el parámetro de consulta de instantáneas.
+ En comparación con la API `LoadTable`, la API `ExtendedLoadTable` se diferencia en los siguientes aspectos:
  +  No exige estrictamente que todos los campos estén disponibles.
  + Proporciona los siguientes parámetros adicionales en el campo de configuración de la respuesta:   
**Parámetros adicionales**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/extended-load-table.html)

# PreplanTable
<a name="preplan-table"></a>


**Información general**  

|  |  | 
| --- |--- |
| Nombre de operación | PreplanTable | 
| Tipo |  API de extensiones AWS Glue  | 
| Ruta de REST |  POST /extensions/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1/preplan  | 
| Acción de IAM |  glue:GetTable  | 
| Permisos de Lake Formation | ALL, SELECT, DESCRIBE | 
| Evento de CloudTrail |  glue:GetTable  | 
| Definición de API abierta | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml\$1L211 | 

**Consideraciones**
+ El parámetro de ruta del catálogo debe seguir el estilo descrito en la sección [Parámetros de prefijo y ruta de catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ Solo puede especificar un espacio de nombres de un solo nivel en el parámetro de ruta de REST. Para obtener más información, consulte la sección [Parámetro de ruta de espacio de nombres](connect-glu-iceberg-rest.md#ns-path-param).
+ El llamante de esta API siempre debe determinar si quedan resultados por recuperar en función del token de página. Es posible obtener una respuesta con un elemento de página vacío pero con un token de paginación si el servidor sigue procesando pero no puede generar ningún resultado en el tiempo de respuesta dado.
+  Puede usar esta API solo si la respuesta de la API `ExtendedLoadTable` contiene `aws.server-side-capabilities.scan-planning=true`. 

# PlanTable
<a name="plan-table"></a>


**Información general**  

|  |  | 
| --- |--- |
| Nombre de operación | PlanTable | 
| Tipo |  API de extensiones AWS Glue  | 
| Ruta de REST |  POST /extensions/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1/plan  | 
| Acción de IAM |  glue:GetTable  | 
| Permisos de Lake Formation | ALL, SELECT, DESCRIBE | 
| Evento de CloudTrail |  glue:GetTable  | 
| Definición de API abierta | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml\$1L243 | 

**Consideraciones**
+ El parámetro de ruta del catálogo debe seguir el estilo descrito en la sección [Parámetros de prefijo y ruta de catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ Solo puede especificar un espacio de nombres de un solo nivel en el parámetro de ruta de REST. Para obtener más información, consulte la sección [Parámetro de ruta de espacio de nombres](connect-glu-iceberg-rest.md#ns-path-param).
+ El llamante de esta API siempre debe determinar si quedan resultados por recuperar en función del token de página. Es posible obtener una respuesta con un elemento de página vacío pero con un token de paginación si el servidor sigue procesando pero no puede generar ningún resultado en el tiempo de respuesta dado.
+  Puede usar esta API solo si la respuesta de la API `ExtendedLoadTable` contiene `aws.server-side-capabilities.scan-planning=true`. 

# TableExists
<a name="table-exists"></a>


**Información general**  

|  |  | 
| --- |--- |
| Nombre de operación | TableExists | 
| Tipo |  API del catálogo de REST de Iceberg  | 
| Ruta de REST |  HEAD/iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1  | 
| Acción de IAM |  glue:GetTable  | 
| Permisos de Lake Formation | ALL, SELECT, DESCRIBE | 
| Evento de CloudTrail |  glue:GetTable  | 
| Definición de API abierta | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L833 | 

**Consideraciones**
+ El parámetro de ruta del catálogo debe seguir el estilo descrito en la sección [Parámetros de prefijo y ruta de catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ Solo puede especificar un espacio de nombres de un solo nivel en el parámetro de ruta de REST. Para obtener más información, consulte la sección [Parámetro de ruta de espacio de nombres](connect-glu-iceberg-rest.md#ns-path-param).

# UpdateTable
<a name="update-table"></a>


**Información general**  

|  |  | 
| --- |--- |
| Nombre de operación | UpdateTable | 
| Tipo |  API del catálogo de REST de Iceberg  | 
| Ruta de REST |  POST /iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1  | 
| Acción de IAM |  glue:UpdateTable  | 
| Permisos de Lake Formation | ALL, ALTER | 
| Evento de CloudTrail |  glue:UpdateTable  | 
| Definición de API abierta | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L677 | 

**Consideraciones**
+ El parámetro de ruta del catálogo debe seguir el estilo descrito en la sección [Parámetros de prefijo y ruta de catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ Solo puede especificar un espacio de nombres de un solo nivel en el parámetro de ruta de REST. Para obtener más información, consulte la sección [Parámetro de ruta de espacio de nombres](connect-glu-iceberg-rest.md#ns-path-param).

# StartUpdateTableTransaction
<a name="start-update-table-transaction"></a>


**Información general**  

|  |  | 
| --- |--- |
| Nombre de operación | StartUpdateTableTransaction | 
| Tipo | API de extensión AWS Glue | 
| Ruta de REST |  POST/extensions/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1  | 
| Acción de IAM |  glue:UpdateTable  | 
| Permisos de Lake Formation |  ALL, ALTER  | 
| Evento de CloudTrail |  glue:UpdateTable  | 
| Definición de API abierta | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml\$1L154 | 

**Consideraciones**
+ El parámetro de ruta del catálogo debe seguir el estilo descrito en la sección [Parámetros de prefijo y ruta de catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ Solo puede especificar un espacio de nombres de un solo nivel en el parámetro de ruta de REST. Para obtener más información, consulte la sección [Parámetro de ruta de espacio de nombres](connect-glu-iceberg-rest.md#ns-path-param).
+ La API es asíncrona y devuelve un identificador de transacción que puede usar para realizar un seguimiento mediante la llamada a la API `CheckTransactionStatus`.
+  También se puede realizar una operación `RenamTable` a través de esta API. Cuando eso ocurre, la persona que llama también debe tener el permiso Glue:CreateTable o LakeFormation CREATE\$1TABLE para cambiar el nombre de la tabla. 
+  Puede usar esta API solo si la respuesta de la API `ExtendedLoadTable` contiene `aws.server-side-capabilities.scan-planning=true`. 

# DeleteTable
<a name="delete-table"></a>


**Información general**  

|  |  | 
| --- |--- |
| Nombre de operación | DeleteTable | 
| Tipo |  API del catálogo de REST de Iceberg  | 
| Ruta de REST |  DELETE/iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1  | 
| Acción de IAM |  glue:DeleteTable  | 
| Permisos de Lake Formation | ALL, DROP | 
| Evento de CloudTrail |  glue:DeleteTable  | 
| Definición de API abierta | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L793 | 

**Consideraciones**
+ El parámetro de ruta del catálogo debe seguir el estilo descrito en la sección [Parámetros de prefijo y ruta de catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ Solo puede especificar un espacio de nombres de un solo nivel en el parámetro de ruta de REST. Para obtener más información, consulte la sección [Parámetro de ruta de espacio de nombres](connect-glu-iceberg-rest.md#ns-path-param).
+ La operación de API `DeleteTable` admite una opción de purga. Si la purga está establecida en `true`, los datos de la tabla se eliminan; de lo contrario, no se eliminarán. En el caso de las tablas de Amazon S3, la operación no elimina los datos de las tablas. La operación devuelve un error cuando la tabla está almacenada en Amazon S3 y `purge = TRUE,`. 

  En el caso de las tablas que se guardan en el almacenamiento gestionado de Amazon Redshift, la operación eliminará los datos de la tabla, de forma similar al comportamiento `DROP TABLE` de Amazon Redshift. La operación devuelve un error cuando la tabla está almacenada en Amazon Redshift y `purge = FALSE`.
+ `purgeRequest=true` no se admite. 

# StartDeleteTableTransaction
<a name="start-delete-table-transaction"></a>


**Información general**  

|  |  | 
| --- |--- |
| Nombre de operación | StartDeleteTableTransaction | 
| Tipo |  API de extensiones AWS Glue  | 
| Ruta de REST |  DELETE /extensions/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1  | 
| Acción de IAM |  glue:DeleteTable  | 
| Permisos de Lake Formation | ALL, DROP | 
| Evento de CloudTrail |  glue:DeleteTable  | 
| Definición de API abierta | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L793 | 

**Consideraciones**
+ El parámetro de ruta del catálogo debe seguir el estilo descrito en la sección [Parámetros de prefijo y ruta de catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ Solo puede especificar un espacio de nombres de un solo nivel en el parámetro de ruta de REST. Para obtener más información, consulte la sección [Parámetro de ruta de espacio de nombres](connect-glu-iceberg-rest.md#ns-path-param).
+ `purgeRequest=false` no se admite. 
+  La API es asíncrona y devuelve un identificador de transacción que se puede rastrear mediante `CheckTransactionStatus`. 

# CheckTransactionStatus
<a name="check-transaction-status"></a>


**Información general**  

|  |  | 
| --- |--- |
| Nombre de operación | CheckTransactionStatus | 
| Tipo |  API de extensiones AWS Glue  | 
| Ruta de REST |  POST/extensions/v1/transactions/status  | 
| Acción de IAM |  El mismo permiso que la acción que inicia la transacción  | 
| Permisos de Lake Formation | El mismo permiso que la acción que inicia la transacción | 
| Definición de API abierta | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml\$1L273 | 

**Consideraciones**
+ El parámetro de ruta del catálogo debe seguir el estilo descrito en la sección [Parámetros de prefijo y ruta de catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).

# Conexión al catálogo de datos desde una aplicación Spark independiente
<a name="connect-gludc-spark"></a>

Puede conectarse al catálogo de datos desde una aplicación independiente mediante un conector de Apache Iceberg. 

1. Cree un rol de IAM para la aplicación Spark.

1. Conéctese al punto de conexión de REST de Iceberg de AWS Glue mediante el conector de Iceberg.

   ```
   # configure your application. Refer to https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html for best practices on configuring environment variables.
   export AWS_ACCESS_KEY_ID=$(aws configure get appUser.aws_access_key_id)
   export AWS_SECRET_ACCESS_KEY=$(aws configure get appUser.aws_secret_access_key)
   export AWS_SESSION_TOKEN=$(aws configure get appUser.aws_secret_token)
   
   export AWS_REGION=us-east-1
   export REGION=us-east-1
   export AWS_ACCOUNT_ID = {specify your aws account id here}
   
   ~/spark-3.5.3-bin-hadoop3/bin/spark-shell \
       --packages org.apache.iceberg:iceberg-spark-runtime-3.4_2.12:1.6.0 \
       --conf "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions" \
       --conf "spark.sql.defaultCatalog=spark_catalog" \
       --conf "spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog" \
       --conf "spark.sql.catalog.spark_catalog.type=rest" \
       --conf "spark.sql.catalog.spark_catalog.uri=https://glue.us-east-1.amazonaws.com/iceberg" \
       --conf "spark.sql.catalog.spark_catalog.warehouse = {AWS_ACCOUNT_ID}" \
       --conf "spark.sql.catalog.spark_catalog.rest.sigv4-enabled=true" \
       --conf "spark.sql.catalog.spark_catalog.rest.signing-name=glue" \
       --conf "spark.sql.catalog.spark_catalog.rest.signing-region=us-east-1" \
       --conf "spark.sql.catalog.spark_catalog.io-impl=org.apache.iceberg.aws.s3.S3FileIO" \
       --conf "spark.hadoop.fs.s3a.aws.credentials.provider=org.apache.hadoop.fs.s3a.SimpleAWSCredentialProvider"
   ```

1. Consulte los datos en el catálogo de datos.

   ```
   spark.sql("create database myicebergdb").show()
   spark.sql("""CREATE TABLE myicebergdb.mytbl (name string) USING iceberg location 's3://bucket_name/mytbl'""")
   spark.sql("insert into myicebergdb.mytbl values('demo') ").show()
   ```

# Asignación de datos entre Amazon Redshift y Apache Iceberg
<a name="data-mapping-rs-iceberg"></a>

Redshift e Iceberg admiten varios tipos de datos. La siguiente matriz de compatibilidad describe la compatibilidad y las limitaciones cuando tenga que asignar datos entre estos dos sistemas de datos. Consulte [Tipos de datos de Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/c_Supported_data_types.html) y [Especificaciones de la tabla de Apache Iceberg](https://iceberg.apache.org/spec/#primitive-types) para obtener más información sobre los tipos de datos compatibles en sus respectivos sistemas de datos.


| Tipo de datos de Redshift | Alias | Tipo de datos de Iceberg | 
| --- | --- | --- | 
| SMALLINT | INT2 | int | 
| INTEGER | INT, INT4 | int | 
| BIGINT | INT8 | long | 
| DECIMAL | NUMERIC | decimal | 
| REAL | FLOAT4 | float | 
| REAL | FLOAT4 | float | 
| DOUBLE PRECISION | FLOAT8, FLOAT | double | 
| CHAR | CHARACTER, NCHAR | cadena | 
| VARCHAR | CHARACTER VARYING, NVARCHAR | cadena | 
| BPCHAR |  | cadena | 
| TEXT |  | cadena | 
| DATE |  | date | 
| TIME | TIME WITHOUT TIMEZONE | hora | 
| TIME | TIME WITH TIMEZONE | no admitido | 
| TIMESTAMP | TIMESTAMP WITHOUT TIMEZONE | TIMESTAMP | 
| TIMESTAMPZ | TIMESTAMP WITH TIMEZONE | TIMESTAMPZ | 
| INTERVALO AÑO A MES |  | No compatible | 
| INTERVALO DÍA A SEGUNDO |  | No compatible | 
| BOOLEAN | BOOL | bool | 
| HLLSKETCH |  | No compatible | 
| SUPER |  | No compatible | 
| VARBYTE | VARBINARY, BINARY VARYING | binario | 
| GEOMETRY |  | No compatible | 
| GEOGRAPHY |  | No compatible | 

# Consideraciones y limitaciones al utilizar las API del catálogo de REST de Iceberg AWS Glue
<a name="limitation-glue-iceberg-rest-api"></a>

A continuación, puede ver las consideraciones y limitaciones que surgen al utilizar el comportamiento de la operación de lenguaje de definición de datos (DDL) del catálogo de REST de Apache Iceberg.

**Consideraciones**
+  **Comportamiento de la API `RenameTable`**: la operación `RenameTable` se admite en las tablas de Amazon Redshift, pero no en Amazon S3. 
+  **Operaciones de DDL para espacios de nombres y tablas en Amazon Redshift**: las operaciones de creación, actualización y eliminación de espacios de nombres y tablas en Amazon Redshift son operaciones asíncronas porque dependen del momento en que está disponible el grupo de trabajo que administra Amazon Redshift y de si se va a realizar una transacción de DDL y DML conflictiva y la operación tiene que esperar a que se bloquee para confirmar los cambios. 

**Limitaciones**
+  Las API de visualización de la especificación de REST de Apache Iceberg no son compatibles con el catálogo de REST de AWS Glue Iceberg. 