

# Cómo completar y administrar las tablas transaccionales
<a name="populate-otf"></a>

[Apache Iceberg](https://iceberg.apache.org/), [Apache Hudi](https://hudi.incubator.apache.org/) y Linux Foundation [Delta Lake](https://delta.io/) son formatos de tablas de código abierto diseñados para gestionar cargas de trabajo de análisis de datos y lagos de datos a gran escala en Apache Spark. 

Puede completar las tablas de Iceberg, Hudi y Delta Lake en el AWS Glue Data Catalog mediante los siguientes métodos: 
+ Rastreador de AWS Glue: Los Rastreador de AWS Glue pueden detectar y completar automáticamente los metadatos de las tablas de Iceberg, Hudi y Delta Lake en el Catálogo de datos. Para obtener más información, consulte [Uso de rastreadores para completar el Catálogo de datos](add-crawler.md).
+ Trabajos de ETL de AWS Glue: Puede crear trabajos de ETL para escribir datos en las tablas de Iceberg, Hudi y Delta Lake, y completar sus metadatos en el Catálogo de datos. Para obtener más información, consulte [Uso de marcos de lagos de datos con trabajos de ETL de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-datalake-native-frameworks.html).
+ Consola de AWS Glue, consola de AWS Lake Formation, AWS CLI o API: Puede usar la consola de AWS Glue, la consola de Lake Formation o API para crear y administrar las definiciones de las tablas de Iceberg en el Catálogo de datos.

**Topics**
+ [Creación de tablas de Apache Iceberg](#creating-iceberg-tables)
+ [Optimización de las tablas de Iceberg](table-optimizers.md)
+ [Optimización del rendimiento de las consultas en tablas de Iceberg](iceberg-column-statistics.md)

## Creación de tablas de Apache Iceberg
<a name="creating-iceberg-tables"></a>

Puede crear tablas de Apache Iceberg que utilicen el formato de datos de Apache Parquet en el AWS Glue Data Catalog con datos que residan en Amazon S3. Una tabla en el Catálogo de datos es la definición de metadatos que representa los datos en un almacén de datos. AWS Glue crea tablas de Iceberg v2 de forma predeterminada. Para ver la diferencia entre las tablas v1 y v2, consulte [Cambios de versión de formato](https://iceberg.apache.org/spec/#appendix-e-format-version-changes) en la documentación de Apache Iceberg.

 [Apache Iceberg](https://iceberg.apache.org/) es un formato de tabla abierto para conjuntos de datos analíticos muy grandes. Iceberg permite modificar fácilmente su esquema, o evolución del esquema, de manera que los usuarios pueden añadir, renombrar o eliminar columnas de una tabla de datos sin alterar los datos subyacentes. Iceberg también ofrece compatibilidad con el control de versiones de datos, que permite a los usuarios hacer un seguimiento de los cambios en los datos a lo largo del tiempo. Esto habilita la característica de viaje en el tiempo, con la que los usuarios pueden acceder a versiones históricas de los datos y consultarlas, así como analizar los cambios en los datos entre actualizaciones y eliminaciones.

Puede usar la consola de AWS Glue o de Lake Formation, o bien la operación `CreateTable` en la API de AWS Glue, para crear una tabla de Iceberg en el Catálogo de datos. Para obtener más información, consulte la [acción CreateTable (Python: create\$1table](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html#aws-glue-api-catalog-tables-CreateTable)).

Cuando cree una tabla de Iceberg en el Catálogo de datos, deberá especificar el formato de la tabla y la ruta del archivo de metadatos en Amazon S3 para poder hacer lecturas y escrituras.

 Puede utilizar Lake Formation para asegurar su tabla de Iceberg utilizando permisos de control de acceso específicos cuando registre la ubicación de datos de Amazon S3 con AWS Lake Formation. Para los datos de origen en Amazon S3 y los metadatos que no están registrados en Lake Formation, el acceso se determina mediante las políticas de permisos de IAM para Amazon S3 y acciones de AWS Glue. Para obtener más información, consulte [Administración de permisos](https://docs.aws.amazon.com/lake-formation/latest/dg/managing-permissions.html). 

**nota**  
El Catálogo de datos no admite la creación de particiones ni la adición de propiedades de tablas de iceberg.

### Requisitos previos
<a name="iceberg-prerequisites"></a>

 Para crear tablas de Iceberg en el Catálogo de datos y configurar los permisos de acceso a los datos de Lake Formation, debe cumplir los siguientes requisitos: 

1. 

**Se requieren permisos para crear tablas de Iceberg sin datos registrados en Lake Formation.**

   Además de los permisos necesarios para crear una tabla en el Catálogo de datos, el creador de la tabla requiere los siguientes permisos:
   + `s3:PutObject` en el recurso arn:aws:s3:::\$1bucketName\$1
   + `s3:GetObject` en el recurso arn:aws:s3:::\$1bucketName\$1
   + `s3:DeleteObject` en el recurso arn:aws:s3:::\$1bucketName\$1

1. 

**Se requieren permisos para crear tablas de Iceberg con datos registrados en Lake Formation:**

   Para utilizar Lake Formation para administrar y asegurar los datos de su lago de datos, registre su ubicación de Amazon S3 que tiene los datos de las tablas con Lake Formation. De este modo, Lake Formation puede expedir credenciales a servicios analíticos de AWS como Athena, Redshift Spectrum y Amazon EMR para acceder a los datos. Para obtener más información sobre el registro de una ubicación de Amazon S3, consulte [Cómo añadir una ubicación de Amazon S3 a su lago de datos](https://docs.aws.amazon.com/lake-formation/latest/dg/register-data-lake.html). 

   Una entidad principal que lee y escribe los datos subyacentes que están registrados en Lake Formation requiere los siguientes permisos:
   + `lakeformation:GetDataAccess`
   + `DATA_LOCATION_ACCESS`

     Una entidad principal que tiene permisos de localización de datos en una localización también tiene permisos de localización en todas las ubicaciones secundarias.

     Para obtener más información sobre los permisos de ubicación de datos, consulte [Control de acceso a los datos subyacentes](https://docs.aws.amazon.com/lake-formation/latest/dg/access-control-underlying-data.html#data-location-permissions).

 Para habilitar la compactación, el servicio debe asumir un rol de IAM que tenga permisos para actualizar las tablas del Catálogo de datos. Para obtener más información, consulte [Requisitos previos para la optimización de tablas](optimization-prerequisites.md) 

### Creación de tablas de Iceberg
<a name="create-iceberg-table"></a>

Puede crear tablas de Iceberg v1 y v2 con la consola de AWS Glue o de Lake Formation, o bien con la AWS Command Line Interface, tal como se documenta en esta página. También puede crear tablas de Iceberg con el Rastreador de AWS Glue. Para más información, consulte [Catálogo de datos y rastreadores](https://docs.aws.amazon.com/glue/latest/dg/catalog-and-crawler.html) en la Guía para desarrolladores de AWS Glue.

**Creación de una tabla de Iceberg**

------
#### [ Console ]

1. Inicie sesión en Consola de administración de AWS y abra la consola de AWS Glue en [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. En Catálogo de datos, seleccione **Tablas** y utilice el botón **Crear tabla** para especificar los siguientes atributos:
   + **Nombre de la tabla:** Ingrese el nombre de la tabla. Si utiliza Athena para acceder a las tablas, utilice los [consejos para nombres](https://docs.aws.amazon.com/athena/latest/ug/tables-databases-columns-names.html) recogidos en la Guía del usuario de Amazon Athena.
   + **Base de datos:** Seleccione una base de datos existente o cree una nueva.
   + **Descripción:** Descripción de la tabla. Puede escribir una descripción para ayudarle a entender el contenido de la tabla.
   + **Formato de la tabla:** En **Formato de la tabla**, seleccione Apache Iceberg.
   + **Activar la compactación:** Seleccione **Activar la compactación** para compactar los objetos pequeños de Amazon S3 de la tabla de modo que formen objetos más grandes.
   + **Rol de IAM:** para ejecutar la compactación, el servicio asume un rol de IAM en su nombre. Puede elegir un rol de IAM mediante el menú desplegable. Asegúrese de que el rol tenga los permisos necesarios para habilitar la compactación.

     Para obtener más información sobre los permisos necesarios, consulte [Requisitos previos para la optimización de tablas](optimization-prerequisites.md).
   + **Ubicación:** Especifique la ruta a la carpeta en Amazon S3 que almacena la tabla de metadatos. Iceberg necesita un archivo de metadatos y una ubicación en el Catálogo de datos para poder hacer lecturas y escrituras.
   + **Esquema:** Seleccione **Agregar columnas** para añadir columnas y los tipos de datos de las columnas. Tiene la opción de crear una tabla vacía y actualizar el esquema más adelante. El Catálogo de datos admite los tipos de datos de Hive. Para obtener más información, consulte [Tipos de datos de Hive](https://cwiki.apache.org/confluence/plugins/servlet/mobile?contentId=27838462#content/view/27838462). 

      Con Iceberg podrá desarrollar el esquema y la partición después de crear la tabla. Puede utilizar [consultas de Athena](https://docs.aws.amazon.com/athena/latest/ug/querying-iceberg-evolving-table-schema.html) para actualizar el esquema de la tabla y [consultas de Spark](https://iceberg.apache.org/docs/latest/spark-ddl/#alter-table-sql-extensions) para actualizar las particiones. 

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

```
aws glue create-table \
    --database-name iceberg-db \
    --region us-west-2 \
    --open-table-format-input '{
      "IcebergInput": { 
           "MetadataOperation": "CREATE",
           "Version": "2"
         }
      }' \
    --table-input '{"Name":"test-iceberg-input-demo",
            "TableType": "EXTERNAL_TABLE",
            "StorageDescriptor":{ 
               "Columns":[ 
                   {"Name":"col1", "Type":"int"}, 
                   {"Name":"col2", "Type":"int"}, 
                   {"Name":"col3", "Type":"string"}
                ], 
               "Location":"s3://DOC_EXAMPLE_BUCKET_ICEBERG/"
            }
        }'
```

------

**Topics**
+ [Requisitos previos](#iceberg-prerequisites)
+ [Creación de tablas de Iceberg](#create-iceberg-table)

# Optimización de las tablas de Iceberg
<a name="table-optimizers"></a>

AWS Glue admite varias opciones de optimización de tablas que mejoran la administración y el rendimiento de las tablas de Apache Iceberg utilizadas por los motores analíticos de AWS y los trabajos de ETL. Estos optimizadores ofrecen un uso eficiente del almacenamiento, un rendimiento mejorado de las consultas y la administración efectiva de los datos. Existen tres tipos de optimizadores de tablas disponibles en AWS Glue: 
+ **Compactación**: la compactación de datos compacta archivos de datos pequeños para reducir el uso del almacenamiento y mejorar el rendimiento de lectura. Los archivos de datos se combinan y se reescriben para eliminar los datos obsoletos y consolidar los datos fragmentados en archivos más grandes y eficientes. Puede configurar la compactación para que se ejecute de forma automática. 

  Binpack es la estrategia de compactación predeterminada que utiliza Apache Iceberg. Combina archivos de datos más pequeños en otros de mayor tamaño para mejorar el rendimiento. La compactación también admite las estrategias de ordenación y orden Z, que agrupan datos similares. La ordenación organiza los datos según columnas especificadas y mejora el rendimiento de las consultas en operaciones que aplican filtros. El orden Z crea conjuntos de datos ordenados que mejoran el rendimiento de las consultas cuando se consultan varias columnas al mismo tiempo. Las tres estrategias de compactación (binpack, ordenación y orden Z) reducen la cantidad de datos que escanean los motores de consultas, lo que a su vez disminuye los costos de procesamiento de las consultas.
+ **Retención de instantáneas**: las instantáneas son versiones con fecha y hora de una tabla de Iceberg. Las configuraciones de retención de instantáneas permiten a los clientes determinar cuánto tiempo se deben retener las instantáneas y cuántas instantáneas retener. La configuración de un optimizador de retención de instantáneas puede ayudar a administrar la sobrecarga de almacenamiento mediante la eliminación de las instantáneas antiguas e innecesarias y sus correspondientes archivos subyacentes.
+ **Eliminación de archivos huérfanos**: los archivos huérfanos son archivos a los que los metadatos de la tabla de Iceberg ya no hacen referencia. Con el tiempo, estos archivos se pueden acumular, sobre todo después de operaciones como la eliminación de tablas o los errores en los trabajos de ETL. Habilitar la eliminación de archivos huérfanos permite a AWS Glue identificar y eliminar periódicamente estos archivos innecesarios y así liberar espacio de almacenamiento.

La configuración de la optimización a nivel de catálogo está disponible a través de la consola de Lake Formation y mediante el uso de la operación de la API `UpdateCatalog` de AWS Glue. Puede activar o desactivar la compactación, la retención de instantáneas y la eliminación de archivos huérfanos para tablas de Iceberg individuales en el Catálogo de datos mediante la consola de AWS Glue, la AWS CLI o las operaciones de la API de AWS Glue. 

 En el siguiente video se muestra cómo configurar optimizadores para tablas de Iceberg en el Catálogo de datos. 

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/xOXE7AS-pNA?si=lKvt_TSlPkoc6OXn/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/xOXE7AS-pNA?si=lKvt_TSlPkoc6OXn)


**Topics**
+ [Requisitos previos para la optimización de tablas](optimization-prerequisites.md)
+ [Optimizadores de tablas a nivel de catálogo](catalog-level-optimizers.md)
+ [Optimización de la compactación](compaction-management.md)
+ [Optimización de retención de instantáneas](snapshot-retention-management.md)
+ [Eliminación de archivos huérfanos](orphan-file-deletion.md)
+ [Visualización de los detalles de la optimización](view-optimization-status.md)
+ [Visualización de métricas de Amazon CloudWatch](view-optimization-metrics.md)
+ [Eliminar un optimizador](delete-optimizer.md)
+ [Consideraciones y limitaciones](optimizer-notes.md)
+ [Regiones compatibles con los optimizadores de tablas](regions-optimizers.md)

# Requisitos previos para la optimización de tablas
<a name="optimization-prerequisites"></a>

El optimizador de tablas asume los permisos del rol de AWS Identity and Access Management (IAM) que especifica al habilitar las opciones de optimización (compactación, retención de instantáneas y eliminación de archivos huérfanos) de una tabla. Puede crear un único rol para todos los optimizadores o crear roles separados para cada optimizador.

**nota**  
El optimizador de eliminación de archivos huérfanos no requiere los permisos `glue:updateTable` o `s3:putObject`. Los optimizadores de compactación y caducidad de las instantáneas requieren el mismo conjunto de permisos.

El rol de IAM debe tener los permisos para leer los datos y actualizar los metadatos en el catálogo de datos. Cree un rol de IAM y adjunte las siguientes políticas integradas:
+ Agregue la siguiente política insertada que conceda a Amazon S3 permisos de lectura y escritura en la ubicación para los datos en los que no estén registrados con AWS Lake Formation. Esta política también incluye permisos para actualizar la tabla en el catálogo de datos y permitir que AWS Glue agregue registros en los registros Amazon CloudWatch y publicar métricas. Para los datos de origen en Amazon S3 que no estén registrados en Lake Formation, el acceso se determina mediante las políticas de permisos de IAM para Amazon S3 y acciones de AWS Glue. 

  En las siguientes políticas en línea, sustituya `bucket-name` por el nombre de su bucket de Amazon S3, `aws-account-id` y `region` por un número de cuenta y región del catálogo de datos de AWS válidos, `database_name` por el nombre de su base de datos y `table_name` por el nombre de la tabla.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "s3:PutObject",
                  "s3:GetObject",
                  "s3:DeleteObject"
              ],
              "Resource": [
                  "arn:aws:s3:::amzn-s3-demo-bucket/*"
              ]
          },
          {
              "Effect": "Allow",
              "Action": [
                  "s3:ListBucket"
              ],
              "Resource": [
                  "arn:aws:s3:::amzn-s3-demo-bucket"
              ]
          },
          {
              "Effect": "Allow",
              "Action": [
                  "glue:UpdateTable",
                  "glue:GetTable"
              ],
              "Resource": [
                  "arn:aws:glue:us-east-1:111122223333:table/<database-name>/<table-name>",
                  "arn:aws:glue:us-east-1:111122223333:database/<database-name>",
                  "arn:aws:glue:us-east-1:111122223333:catalog"
              ]
          },
          {
              "Effect": "Allow",
              "Action": [
                  "logs:CreateLogGroup",
                  "logs:CreateLogStream",
                  "logs:PutLogEvents"
              ],
              "Resource": [
                  "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue/iceberg-compaction/logs:*",
                  "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue/iceberg-retention/logs:*",
                  "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue/iceberg-orphan-file-deletion/logs:*"
              ]
          }
      ]
  }
  ```

------
+ Utilice la siguiente política para habilitar la compactación de los datos registrados en Lake Formation. 

  Si el rol de optimización no tiene permisos de grupo `IAM_ALLOWED_PRINCIPALS` otorgados en la tabla, el rol requiere los permisos de Lake Formation `ALTER`, `DESCRIBE`, `INSERT` y `DELETE` de la tabla. 

  Para obtener más información sobre cómo registrar un bucket de Amazon S3 con Lake Formation, consulte [Cómo añadir una ubicación de Amazon S3 a su lago de datos](https://docs.aws.amazon.com/lake-formation/latest/dg/register-data-lake.html).

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "lakeformation:GetDataAccess"
        ],
        "Resource": "*"
      },
      {
        "Effect": "Allow",
        "Action": [
          "glue:UpdateTable",
          "glue:GetTable"
        ],
        "Resource": [
          "arn:aws:glue:us-east-1:111122223333:table/databaseName/tableName",
          "arn:aws:glue:us-east-1:111122223333:database/databaseName",
          "arn:aws:glue:us-east-1:111122223333:catalog"
        ]
      },
      {
        "Effect": "Allow",
        "Action": [
          "logs:CreateLogGroup",
          "logs:CreateLogStream",
          "logs:PutLogEvents"
        ],
        "Resource": [
          "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue/iceberg-compaction/logs:*",
          "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue/iceberg-retention/logs:*",
          "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue/iceberg-orphan-file-deletion/logs:*"
        ]
      }
    ]
  }
  ```

------
+ (Opcional) Para optimizar tablas de Iceberg con datos de buckets de Amazon S3 cifrados mediante [cifrado del servidor](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html), el rol de compactación requiere permisos para descifrar los objetos de Amazon S3 y generar una nueva clave de datos para escribir los objetos en los buckets cifrados. Agregue la siguiente política a la clave de AWS KMS deseada. Solo admitimos el cifrado a nivel de bucket.

  ```
  {
      "Effect": "Allow",
      "Principal": {
          "AWS": "arn:aws:iam::<aws-account-id>:role/<optimizer-role-name>"
      },
      "Action": [
          "kms:Decrypt",
          "kms:GenerateDataKey"
      ],
      "Resource": "*"
  }
  ```
+  (Opcional) Para la ubicación de datos registrada en Lake Formation, el rol utilizado para registrar la ubicación requiere permisos para descifrar los objetos de Amazon S3 y generar una nueva clave de datos para escribir los objetos en los buckets cifrados. Para obtener más información, consulte [Registro de una ubicación de Amazon S3](https://docs.aws.amazon.com/lake-formation/latest/dg/register-encrypted.html). 
+ (Opcional) Si la clave AWS KMS está almacenada en una cuenta AWS diferente, debe incluir los siguientes permisos para el rol de compactación.

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "kms:Decrypt",
          "kms:GenerateDataKey"
        ],
        "Resource": [
          "arn:aws:kms:us-east-1:111122223333:key/key-id"
        ]
      }
    ]
  }
  ```

------
+  El rol que utilice para ejecutar la compactación debe tener el permiso `iam:PassRole` correspondiente al rol. 

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "iam:PassRole"
        ],
        "Resource": [
          "arn:aws:iam::111122223333:role/<optimizer-role-name>"
        ]
      }
    ]
  }
  ```

------
+ Agregue la siguiente política de confianza al rol para que el servicio AWS Glue asuma el rol de IAM para ejecutar el proceso de compactación.

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Sid": "",
        "Effect": "Allow",
        "Principal": {
          "Service": "glue.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
      }
    ]
  }
  ```

------
+ <a name="catalog-optimizer-requirement"></a> (Opcional) Para actualizar la configuración del Catálogo de datos y así poder habilitar las optimizaciones a nivel de catálogo, el rol de IAM que se utiliza debe tener el permiso `glue:UpdateCatalog` o el permiso `ALTER CATALOG` de AWS Lake Formation en el catálogo raíz. Puede utilizar la API `GetCatalog` para verificar las propiedades del catálogo. 

# Optimizadores de tablas a nivel de catálogo
<a name="catalog-level-optimizers"></a>

Con una configuración de catálogo única, puede configurar optimizadores automáticos como la compactación, la retención de instantáneas y la eliminación de archivos huérfanos para todas las tablas de Apache Iceberg nuevas y actualizadas en el AWS Glue Data Catalog. Las configuraciones de los optimizadores a nivel de catálogo le permiten aplicar la misma configuración de optimización en todas las tablas de un catálogo, lo que elimina la necesidad de configurar los optimizadores individualmente para cada tabla.

Para configurar los optimizadores de tablas, los administradores de lagos de datos pueden seleccionar el catálogo predeterminado en la consola de Lake Formation y habilitar los optimizadores mediante la opción `Table optimization`. Al crear tablas nuevas o actualizar las tablas existentes en el Catálogo de datos, el Catálogo de datos ejecuta automáticamente las optimizaciones de las tablas para reducir la carga operativa.

Si configuró la optimización a nivel de la tabla o si eliminó previamente la configuración de optimización de una tabla, esa configuración específica de cada tabla tendrá prioridad sobre la configuración predeterminada del catálogo para la optimización de tablas. Si un parámetro de configuración no está definido ni a nivel de tabla ni de catálogo, se aplicará el valor de la propiedad de la tabla de Iceberg. Esta configuración se aplica al optimizador de retención de instantáneas y eliminación de archivos huérfanos.

Cuando habilite los optimizadores a nivel del catálogo, tenga en cuenta lo siguiente:
+ Si configura los ajustes de optimización cuando crea el catálogo y, posteriormente, deshabilita las optimizaciones mediante una solicitud de actualización del catálogo, la operación se extenderá en cascada a todas las tablas del catálogo.
+ Si ya ha configurado optimizadores para una tabla determinada, la operación de deshabilitación a nivel de catálogo no afectará esta tabla.
+ Si deshabilita los optimizadores a nivel de catálogo, las tablas con configuraciones de optimización existentes mantendrán sus ajustes específicos y no se verán afectadas por el cambio a nivel de catálogo. Sin embargo, las tablas que no tengan sus propias configuraciones de optimización heredarán el estado deshabilitado del nivel de catálogo.
+ Como los optimizadores para la retención de instantáneas y la eliminación de archivos huérfanos pueden basarse en una programación, las actualizaciones introducirán un retraso al azar en el inicio de su programación. Esto hará que cada optimizador se inicie en momentos ligeramente diferentes, lo que distribuirá la carga y reducirá la probabilidad de superar los límites de servicio.
+ La configuración del optimizador a nivel de catálogo no se hereda automáticamente en las tablas cuando el cifrado de AWS Glue Data Catalog está habilitado. Si el catálogo tiene habilitado el cifrado de metadatos, debe configurar los optimizadores de tabla de forma individual para cada tabla. Para utilizar la herencia de optimizadores a nivel de catálogo, el cifrado de metadatos debe estar desactivado en el catálogo.

**Topics**
+ [Habilitación de la optimización automática de tablas a nivel de catálogo](enable-auto-table-optimizers.md)
+ [Visualización de optimizaciones a nivel de catálogo](view-catalog-optimizations.md)
+ [Cómo deshabilitar la optimización de tablas a nivel de catálogo](disable-auto-table-optimizers.md)

# Habilitación de la optimización automática de tablas a nivel de catálogo
<a name="enable-auto-table-optimizers"></a>

 Puede habilitar la optimización automática de tablas para todas las tablas nuevas de Apache Iceberg en el Catálogo de datos. Tras crear la tabla, también puede actualizar de forma explícita y manual la configuración de la optimización de las tablas. 

 Para actualizar la configuración del Catálogo de datos y así poder habilitar las optimizaciones a nivel de catálogo, el rol de IAM que utiliza debe tener el permiso `glue:UpdateCatalog` en el catálogo raíz. Puede utilizar la API `GetCatalog` para verificar las propiedades del catálogo. 

 En el caso de las tablas gestionadas por Lake Formation, el rol de IAM seleccionado durante la configuración de la optimización del catálogo requiere los permisos `ALTER`, `DESCRIBE`, `INSERT`, y `DELETE` de Lake Formation para cualquier tabla nueva o actualizada. 

## Para habilitar los optimizadores a nivel de catálogo (consola)
<a name="enable-catalog-optimizers-console"></a>

1. Abra la consola de Lake Formation en [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. En el panel de navegación, seleccione **Catálogo de datos**.

1. Seleccione la pestaña **Catálogos**.

1. Elija el catálogo a nivel de la cuenta.

1. Seleccione **Optimizaciones de tablas** y **Editar** en la pestaña **Optimizaciones de tablas**. También puede seleccionar **Editar optimizaciones** en **Acciones**.  
![\[La captura de pantalla muestra la opción de edición para habilitar las optimizaciones a nivel de catálogo.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/catalog-edit-optimizations.png)

1. En la página **Optimizaciones de tablas**, configure las siguientes opciones:  
![\[La captura de pantalla muestra las opciones de optimización a nivel de catálogo.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/catalog-optimization-options.png)

   1. Configure los ajustes de **Compactación**:
      + Habilite/deshabilite la compactación.
      + Elija el rol de IAM que tenga los permisos necesarios para ejecutar los optimizadores.

        Para obtener más información sobre los permisos necesarios para el rol de IAM, consulte [Requisitos previos para la optimización de tablas](optimization-prerequisites.md).

   1. Configure los ajustes de **Retención de instantáneas**:
      + Habilite/deshabilite la retención.
      + Establezca el período de retención de instantáneas en días; el valor predeterminado es de 5 días.
      + Establezca el número de instantáneas que se deben retener; el valor predeterminado es de 1 instantánea.
      + Habilite/deshabilite la limpieza de archivos caducados.

   1. Configure los ajustes de **Eliminación de archivos huérfanos**:
      + Habilite/deshabilite la eliminación de archivos huérfanos.
      + Establezca el período de retención de archivos huérfanos en días; el valor predeterminado es de 3 días.

1. Seleccione **Save**.

## Cómo habilitar los optimizadores a nivel de catálogo mediante AWS CLI
<a name="catalog-auto-optimizers-cli"></a>

Utilice el siguiente comando de la CLI para actualizar un catálogo existente con ajustes del optimizador:

**Example Actualice el catálogo con la configuración del optimizador**  

```
aws glue update-catalog \
   --name catalog-id \
  --catalog-input \
  '{
    "CatalogId": "111122223333",
    "CatalogInput": {
        "CatalogProperties": {
            "CustomProperties": {
                "ColumnStatistics.Enabled": "false",
                "ColumnStatistics.RoleArn": "arn:aws:iam::111122223333:role/service-role/stats-role-name"
            },
            "IcebergOptimizationProperties": {
                "RoleArn": "arn:aws:iam::111122223333:role/optimizer-role-name",
                "Compaction": {
                    "enabled": "true"
                },
                "Retention": {
                    "enabled": "true",
                    "snapshotRetentionPeriodInDays": "10",
                    "numberOfSnapshotsToRetain": "5",
                    "cleanExpiredFiles": "true"
                },
                "OrphanFileDeletion": {
                    "enabled": "true",
                    "orphanFileRetentionPeriodInDays": "3"
                }
            }
        }
    }
}'
```

Si tiene problemas con los optimizadores a nivel de catálogo, verifique lo siguiente:
+ Asegúrese de que el rol de IAM tenga los permisos correctos, tal como se describe en la sección Requisitos previos.
+ Revise los registros de CloudWatch para ver si hay algún mensaje de error relacionado con las operaciones del optimizador.

   Para obtener más información, consulte [Ver métricas disponibles](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/viewing_metrics_with_cloudwatch.html) en la *Guía del usuario de Amazon CloudWatch*. 
+ Compruebe que la configuración del catálogo se haya aplicado correctamente; para ello, verifique la configuración del catálogo.
+ En el caso de errores de acceso a las tablas, consulte los registros de CloudWatch y las notificaciones de EventBridge para obtener información detallada sobre los errores.

# Visualización de optimizaciones a nivel de catálogo
<a name="view-catalog-optimizations"></a>

 Cuando se habilita la optimización de tablas a nivel de catálogo, cada vez que se crea o actualiza una tabla de Apache Iceberg mediante las API `CreateTable` o `UpdateTable` a través de la Consola de administración de AWS, un SDK o la Rastreador de AWS Glue, se crea una configuración a nivel de tabla equivalente para esa tabla. 

 Después de crear o actualizar una tabla, puede verificar los detalles de esta para confirmar la optimización de tablas. `Table optimization` muestra el conjunto de propiedades `Configuration source` como `Catalog`. 

![\[Se aplicó una imagen de una tabla de Apache Iceberg con una configuración de optimización a nivel de catálogo.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/catalog-optimization-enabled.png)


# Cómo deshabilitar la optimización de tablas a nivel de catálogo
<a name="disable-auto-table-optimizers"></a>

 Puede deshabilitar la optimización de tablas para tablas nuevas mediante la consola de AWS Lake Formation, la API `glue:UpdateCatalog`. 

**Para deshabilitar las optimizaciones de las tablas a nivel de catálogo**

1. Abra la consola de Lake Formation en [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. En la barra de navegación izquierda, elija **Claves**.

1. En la página **Resumen del catálogo**, seleccione **Editar** en **Optimizaciones de tablas**.

1. En la página **Editar optimización**, anule la selección de **Opciones de optimización**.

1. Seleccione **Save**.

# Optimización de la compactación
<a name="compaction-management"></a>

 Los lagos de datos de Amazon S3 que utilizan formatos de tablas abiertos, como Apache Iceberg, almacenan los datos como objetos de S3. Tener miles de objetos pequeños de Amazon S3 en una tabla de lago de datos aumenta la sobrecarga de metadatos y afecta al rendimiento de lectura. AWS Glue Data Catalog proporciona una compactación administrada para tablas de Iceberg, que compacta objetos pequeños en otros más grandes para lograr un mejor rendimiento de lectura mediante servicios de análisis de AWS como Amazon Athena y Amazon EMR, así como trabajos de ETL de AWS Glue. El Catálogo de datos efectúa la compactación sin interferir en las consultas simultáneas y solo admite la compactación en tablas con formato Parquet. 

El optimizador de tablas supervisa continuamente las particiones de las tablas e inicia el proceso de compactación cuando se supera el límite de cantidad y tamaño de los archivos.

En el catálogo de datos, el proceso de compactación comienza cuando una tabla o cualquiera de sus particiones tiene más de 100 archivos. Cada archivo debe tener un tamaño inferior al 75 % del tamaño del archivo de destino. El tamaño del archivo de destino se define mediante la propiedad de tabla `write.target-file-size-bytes`, que por defecto es de 512 MB si no se establece explícitamente.

 Para conocer las limitaciones, consulte [Formatos compatibles y limitaciones de la compactación de datos administrada](optimizer-notes.md#compaction-notes). 

**Topics**
+ [Activación del optimizador de compactación](enable-compaction.md)
+ [Desactivación del optimizador de compactación](disable-compaction.md)

# Activación del optimizador de compactación
<a name="enable-compaction"></a>

 Puede usar la consola de AWS Glue, la AWS CLI o la API de AWS para activar la compactación de sus tablas de Apache Iceberg en el Catálogo de datos de AWS Glue. Para las tablas nuevas, puede elegir Apache Iceberg como formato de tabla y habilitar la compactación al crear la tabla. La compactación está deshabilitada de forma predeterminada para las tablas nuevas.

------
#### [ Console ]

**Habilitación de la compactación**

1.  Abra la consola de AWS Glue en [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) e inicie sesión como administrador del lago de datos, creador de la tabla o usuario al que se le hayan concedido los permisos `glue:UpdateTable` y `lakeformation:GetDataAccess` de la tabla. 

1. En el panel de navegación, en **Catálogo de datos**, elija **Tablas**.

1. En la página **Tablas**, elija una tabla en formato de tabla abierta para la que desee activar la compactación y, a continuación, en el menú **Acciones**, elija **Optimización** y, por último, **Activar**.

   Para activar la compactación, también puede seleccionar la pestaña **Optimización de la tabla** en la página **Detalles de la tabla**. Seleccione la pestaña **Optimización de tablas** en la sección inferior de la página y elija **Habilitar la compactación**. 

   La opción **Activar optimización** también está disponible al crear una nueva tabla de Iceberg en el Catálogo de datos.

1. En la página **Activar optimización**, seleccione **Compactación** en **Opciones de optimización**.  
![\[Página de detalles de la tabla de Apache Iceberg con la opción para habilitar la compactación.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/table-enable-compaction.png)

1. A continuación, seleccione un rol de IAM en el menú desplegable con los permisos que se muestran en la sección [Requisitos previos para la optimización de tablas](optimization-prerequisites.md). 

   También puede elegir la opción **Crear un nuevo rol de IAM** para crear un rol personalizado con los permisos necesarios para ejecutar la compactación.

    Siga los pasos que se indican a continuación para actualizar un rol de IAM existente: 

   1.  Para actualizar la política de permisos del rol de IAM, en la consola de IAM, vaya al rol de IAM que se está utilizando para ejecutar la compactación. 

   1.  En la sección **Agregar permisos**, seleccione Crear política. En la ventana del navegador que se acaba de abrir, cree una nueva política para utilizarla con su rol. 

   1. En la página Crear política, elija la pestaña `JSON`. Copie el código JSON que se muestra en la sección Requisitos previos en el campo del editor de políticas.

1. Si tiene configuraciones de políticas de seguridad en las que el optimizador de tablas de Iceberg necesita acceder a los buckets de Amazon S3 desde una nube privada virtual (VPC) específica, cree una conexión de red de AWS Glue o utilice una existente.

   Si aún no tiene configurada una conexión de VPC de AWS Glue, cree una nueva según los pasos de la sección [Creating connections for connectors](https://docs.aws.amazon.com/glue/latest/dg/creating-connections.html) mediante la consola de AWS Glue, la AWS CLI o los SDK.

1. Elija una estrategia de compactación. Las opciones disponibles son:
   + **Binpack**: Binpack es la estrategia de compactación predeterminada en Apache Iceberg. Combina archivos de datos más pequeños en otros de mayor tamaño para mejorar el rendimiento.
   + **Ordenar**: ordenar en Apache Iceberg es una técnica de organización de datos que agrupa en clústeres la información dentro de los archivos según columnas específicas, lo que mejora significativamente el rendimiento de las consultas al reducir la cantidad de archivos que se deben procesar. El orden de clasificación en los metadatos de Iceberg se establece mediante el campo de ordenación. Cuando se definen varias columnas, los datos se organizan según la secuencia en que estas aparecen, lo que permite almacenar juntos los registros con valores similares dentro de los archivos. La estrategia de compactación por ordenación lleva la optimización un paso más allá, ya que ordena los datos en todos los archivos dentro de una misma partición. 
   + **Orden Z**: el orden Z es una técnica de organización de datos útil cuando se requiere ordenarlos según varias columnas con igual importancia. A diferencia de la ordenación tradicional, que da prioridad a una columna sobre las demás, el orden Z asigna una ponderación equilibrada a cada columna, lo que permite al motor de consultas reducir la cantidad de archivos que debe leer al buscar datos.

     La técnica funciona al entrelazar los dígitos binarios de los valores de distintas columnas. Por ejemplo, si tiene los números 3 y 4 de dos columnas, el orden Z primero los convierte a binario (3 se convierte en 011 y 4 en 100) y luego entrelaza estos dígitos para generar un nuevo valor: 011010. Este entrelazado genera un patrón que mantiene los datos relacionados físicamente próximos entre sí.

     El orden Z resulta especialmente eficaz para consultas multidimensionales. Por ejemplo, una tabla de clientes ordenada en Z por ingresos, Estado y código postal puede ofrecer un rendimiento superior al de una ordenación jerárquica al ejecutar consultas en múltiples dimensiones. Esta organización permite que las consultas orientadas a combinaciones específicas de ingresos y ubicación geográfica localicen los datos relevantes con rapidez y, al mismo tiempo, reduzcan al mínimo los escaneos innecesarios de archivos.

1. **Archivos de entrada mínimos**: el número de archivos de datos necesarios en una partición para que se active la compactación.

1. **Límite de eliminación de archivos**: la cantidad mínima de operaciones de eliminación que debe contener un archivo de datos para que sea elegible para la compactación.

1. Seleccione **Habilitar la optimización**.

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

 En el ejemplo siguiente se muestra cómo habilitar la compactación. Sustituya el ID de cuenta por un ID de cuenta de AWS válido. Sustituya el nombre de la base de datos y el nombre de la tabla por el nombre real de la tabla de Iceberg y el nombre de la base de datos. Sustituya el `roleArn` por el nombre de recurso de AWS (ARN) del rol de IAM y el nombre del rol de IAM que tiene los permisos necesarios para ejecutar la compactación. Puede reemplazar la estrategia de compactación de `sort` con otras estrategias compatibles, como `z-order` o `binpack`.

"orden" según sus requisitos.

```
aws glue create-table-optimizer \
  --catalog-id 123456789012 \
  --database-name iceberg_db \
  --table-name iceberg_table \
  --table-optimizer-configuration '{
    "roleArn": "arn:aws:iam::123456789012:role/optimizer_role",
    "enabled": true,
    "vpcConfiguration": {"glueConnectionName": "glue_connection_name"},
    "compactionConfiguration": {
      "icebergConfiguration": {"strategy": "sort"}
    }
  }'\
--type compaction
```

------
#### [ AWS API ]

Llame a la operación [CreateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-CreateTableOptimizer) para habilitar la compactación de una tabla.

------

Después de activar la compactación, la pestaña **Optimización de la tabla** muestra los siguientes detalles de compactación una vez finalizada la ejecución:

Hora de inicio  
Hora a la que se inició el proceso de compactación en el Catálogo de datos. El valor es una marca en la hora UTC. 

Hora de finalización  
Hora a la que terminó el proceso de compactación en el Catálogo de datos. El valor es una marca en la hora UTC. 

Status  
Estado del ciclo de compactación. Los valores indican éxito o fracaso.

Archivos compactados  
Número de archivos compactados.

Bytes compactados  
Número de bytes compactados.

# Desactivación del optimizador de compactación
<a name="disable-compaction"></a>

 Puede deshabilitar la compactación automática de una tabla Apache Iceberg concreta mediante la consola AWS Glue o AWS CLI. 

------
#### [ Console ]

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Glue en [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. En el panel de navegación izquierdo, en **Catálogo de datos**, elija **Tablas**. 

1. En la lista de tablas, elija la tabla de Iceberg en la que quiera deshabilitar la compactación.

1. Seleccione la pestaña **Optimización de la tabla** en la sección inferior de la página **Detalles de tablas**.

1. En **Acciones**, seleccione **Desactivar** y, a continuación, seleccione **Compactación**.

1.  Selecciona **Desactivar la compactación** en el mensaje de confirmación. Puede volver a habilitar la compactación más adelante. 

    Tras la confirmación, la compactación se desactiva y el estado de compactación de la tabla vuelve a ser el siguiente `Disabled`.

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

En el siguiente ejemplo, reemplace el ID de cuenta con un ID de AWS válido. Sustituya el nombre de la base de datos y el nombre de la tabla por el nombre real de la tabla de Iceberg y el nombre de la base de datos. Sustituya el `roleArn` por el nombre de recurso de AWS (ARN) del rol de IAM y el nombre real del rol de IAM que tiene los permisos necesarios para ejecutar la compactación.

```
aws glue update-table-optimizer \
  --catalog-id 123456789012 \
  --database-name iceberg_db \
  --table-name iceberg_table \
  --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role", "enabled":'false', "vpcConfiguration":{"glueConnectionName":"glue_connection_name"}}'\ 
  --type compaction
```

------
#### [ AWS API ]

Llame a la operación [UpdateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-UpdateTableOptimizer) para deshabilitar la compactación de una tabla específica.

------

# Optimización de retención de instantáneas
<a name="snapshot-retention-management"></a>

La característica de retención de instantáneas de Apache Iceberg permite a los usuarios consultar datos históricos en momentos específicos y revertir las modificaciones no deseadas en sus tablas. En el Catálogo de datos de AWS Glue, la configuración de retención de instantáneas controla cuánto tiempo se conservan estas instantáneas (versiones de los datos de la tabla) antes de que caduquen y se eliminen. Esto ayuda a administrar los costos de almacenamiento y la sobrecarga de metadatos al eliminar automáticamente las instantáneas antiguas en función de un periodo de retención configurado o del número máximo de instantáneas que se deben conservar. 

Puede configurar el periodo de retención en días y el número máximo de instantáneas que se deben retener para una tabla. AWS Glue elimina las instantáneas anteriores al periodo de retención especificado de los metadatos de la tabla y, al mismo tiempo, mantiene las instantáneas más recientes dentro del límite configurado. Tras eliminar las instantáneas antiguas de los metadatos, AWS Glue elimina los archivos de datos y metadatos correspondientes a los que ya no se hace referencia y que son exclusivos de las instantáneas caducadas. Esto permite realizar consultas en el tiempo solo hasta las instantáneas restantes que se han conservado y, al mismo tiempo, recuperar el espacio de almacenamiento utilizado por los datos de las instantáneas caducadas.

**Topics**
+ [Habilitación del optimizador de retención de instantáneas](enable-snapshot-retention.md)
+ [Actualización del optimizador de retención de instantáneas](update-snapshot-retention.md)
+ [Deshabilitación del optimizador de retención de instantáneas](disable-snapshot-retention.md)

# Habilitación del optimizador de retención de instantáneas
<a name="enable-snapshot-retention"></a>

 Puede usar la consola de AWS Glue, la AWS CLI o la API de AWS para habilitar los optimizadores de retención de instantáneas de las tablas Apache Iceberg en el Catálogo de datos. Para las tablas nuevas, puede elegir Apache Iceberg como formato de tabla y habilitar el optimizador de retención de instantáneas al crear la tabla. La retención de instantáneas está deshabilitada de forma predeterminada para las tablas nuevas.

------
#### [ Console ]

**Habilitación del optimizador de retención de instantáneas**

1.  Abra la consola de AWS Glue en [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) e inicie sesión como administrador del lago de datos, creador de la tabla o usuario al que se le hayan concedido los permisos `glue:UpdateTable` y `lakeformation:GetDataAccess` de la tabla. 

1. En el panel de navegación, en **Catálogo de datos**, elija **Tablas**.

1. En la página **Tablas**, elija una tabla de Iceberg para la que desee habilitar el optimizador de retención de instantáneas y, a continuación, en el menú **Acciones**, seleccione **Habilitar** en **Optimización**.

   Para habilitar la optimización, también puede seleccionar la tabla y abrir la página **Detalles de la tabla**. Seleccione la pestaña **Optimización de tablas** en la sección inferior de la página y elija **Habilitar la retención de instantáneas**. 

1. En la página **Habilitar la optimización**, en **Configuración de optimización**, tiene dos opciones: **Usar la configuración predeterminada** o **Personalizar la configuración**. Si elige usar la configuración predeterminada, AWS Glue utiliza las propiedades definidas en la configuración de la tabla de Iceberg para determinar el periodo de retención de las instantáneas y el número de instantáneas que se deben retener. En ausencia de esta configuración, AWS Glue retiene una instantánea durante cinco días y elimina los archivos asociados a las instantáneas caducadas.

1.  A continuación, elija un rol de IAM que AWS Glue pueda asumir en su nombre para ejecutar el optimizador. Para obtener más información sobre los permisos necesarios para el rol de IAM, consulte la sección [Requisitos previos para la optimización de tablas](optimization-prerequisites.md).

   Siga los pasos que se indican a continuación para actualizar un rol de IAM existente: 

   1.  Para actualizar la política de permisos del rol de IAM, en la consola de IAM, vaya al rol de IAM que se está utilizando para ejecutar la compactación. 

   1.  En la sección Agregar permisos, seleccione Crear política. En la ventana del navegador que se acaba de abrir, cree una nueva política para utilizarla con su rol. 

   1. En la página Crear política, elija la pestaña JSON. Copie el código JSON que se muestra en la sección Requisitos previos en el campo del editor de políticas.

1. Si prefiere establecer los valores de **Configuración de retención de instantáneas** de forma manual, elija **Personalizar la configuración**.   
![\[Página de detalles de la tabla Apache Iceberg con la opción Habilitar la retención>Personalizar la configuración.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/table-enable-retention.png)

1. Seleccione la casilla **Aplicar el rol de IAM seleccionado a los optimizadores seleccionados** para usar un solo rol de IAM para todos los optimizadores activados.

1. Si tiene configuraciones de políticas de seguridad en las que el optimizador de tablas de Iceberg necesita acceder a los buckets de Amazon S3 desde una nube privada virtual (VPC) específica, cree una conexión de red de AWS Glue o utilice una existente.

   Si aún no tiene configurada una conexión de VPC de AWS Glue, cree una nueva según los pasos de la sección [Creating connections for connectors](https://docs.aws.amazon.com/glue/latest/dg/creating-connections.html) mediante la consola de AWS Glue, la AWS CLI o los SDK.

1. A continuación, en **Configuración de retención de instantáneas**, elija usar los valores especificados en [Configuración de la tabla de Iceberg](https://iceberg.apache.org/docs/1.5.2/configuration/#table-behavior-properties) o especifique valores personalizados para el período de retención de las instantáneas (history.expire.max-snapshot-age-ms), el número mínimo de instantáneas que se deben retener (history.expire.min-snapshots-to-keep) y el tiempo en horas entre cada ejecución del trabajo de eliminación de instantáneas.

1.  Seleccione **Eliminar los archivos asociados** para eliminar los archivos subyacentes cuando el optimizador de tablas elimine las instantáneas antiguas de los metadatos de la tabla.

    Si no selecciona esta opción, cuando las instantáneas antiguas se eliminen de los metadatos de la tabla, sus archivos asociados permanecerán en el almacenamiento como archivos huérfanos. 

1. A continuación, lea la declaración de precaución y seleccione **Acepto** para continuar.
**nota**  
 En el Catálogo de datos, el optimizador de retención de instantáneas respeta el ciclo de vida controlado por las políticas de retención de nivel de ramificación y etiqueta. Para obtener más información, consulte la sección [Branching and tagging](https://iceberg.apache.org/docs/latest/branching/#overview) de la documentación de Iceberg.

1. Revise la configuración y elija **Habilitar la optimización**.

   Espere unos minutos a que el optimizador de retención se ejecute y caduque las instantáneas antiguas según la configuración.

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

 Para habilitar la retención de instantáneas en las tablas nuevas Iceberg en AWS Glue, debe crear un optimizador de tablas de tipo `retention` y establecer el campo `enabled` en `true` en `table-optimizer-configuration`. Para ello, puede usar el comando de la AWS CLI `create-table-optimizer` o `update-table-optimizer`. Además, debe especificar los campos de configuración de la retención como `snapshotRetentionPeriodInDays` y `numberOfSnapshotsToRetain` en función de sus requisitos.

En el siguiente ejemplo se muestra cómo habilitar el optimizador de retención de instantáneas. Sustituya el ID de cuenta por un ID de cuenta de AWS válido. Sustituya el nombre de la base de datos y el nombre de la tabla por el nombre real de la tabla de Iceberg y el nombre de la base de datos. Sustituya `roleArn` por el nombre de recurso de AWS (ARN) del rol de IAM y el nombre del rol de IAM que tiene los permisos necesarios para ejecutar el optimizador de retención de instantáneas. 

```
aws glue create-table-optimizer \
  --catalog-id 123456789012 \
  --database-name iceberg_db \
  --table-name iceberg_table \
  --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role","enabled":'true', "vpcConfiguration":{
"glueConnectionName":"glue_connection_name"}, "retentionConfiguration":{"icebergConfiguration":{"snapshotRetentionPeriodInDays":7,"numberOfSnapshotsToRetain":3,"cleanExpiredFiles":'true'}}}'\
  --type retention
```

 Este comando crea un optimizador de retención para la tabla de Iceberg especificada en el catálogo, la base de datos y la región indicados. table-optimizer-configuration especifica el ARN del rol de IAM que se va a utilizar, habilita el optimizador y establece la configuración de retención. En este ejemplo, retiene las instantáneas durante 7 días, conserva un mínimo de 3 instantáneas y limpia los archivos caducados. 
+  snapshotRetentionPeriodInDays: número de días que se deben retener las instantáneas antes de provocar que caduquen. El valor predeterminado es `5`. 
+ numberOfSnapshotsToRetain: número mínimo de instantáneas que se deben retener, incluso si son anteriores al periodo de retención. El valor predeterminado es `1`. 
+ cleanExpiredFiles: valor booleano que indica si se deben eliminar los archivos de datos caducados después de que las instantáneas hayan caducado. El valor predeterminado es `true`.

   Si se establece en verdadero, las instantáneas más antiguas se eliminan de los metadatos de la tabla, así como sus archivos subyacentes. Si este parámetro se establece en falso, las instantáneas más antiguas se eliminan de los metadatos de la tabla, pero sus archivos subyacentes permanecen en el almacenamiento como archivos huérfanos. 

------
#### [ AWS API ]

Llame a la operación [CreateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-CreateTableOptimizer) para habilitar el optimizador de retención de captura de pantalla de una tabla.

------

Después de activar la compactación, la pestaña de **Optimización de la tabla** muestra los siguientes detalles de compactación (después de aproximadamente 15 a 20 minutos):

Hora de inicio  
Hora a la que se inició el optimizador de retención de instantáneas. El valor es una marca en la hora UTC. 

Tiempo de ejecución  
La hora muestra el tiempo que tarda el optimizador en completar la tarea. El valor es una marca en la hora UTC. 

Status  
Estado de la ejecución del optimizador. Los valores indican éxito o fracaso.

Archivos de datos eliminados  
Número total de archivos eliminados.

Archivos de manifiesto eliminados  
Número total de archivos de manifiesto eliminados.

Listas de manifiesto eliminadas  
Número total de listas de manifiesto eliminadas.

# Actualización del optimizador de retención de instantáneas
<a name="update-snapshot-retention"></a>

 Puede actualizar la configuración existente de un optimizador de retención de instantáneas para una tabla de Apache Iceberg concreta mediante la consola de AWS Glue, la AWS CLI o la API UpdateTableOptimizer. 

------
#### [ Console ]

**Actualización de la configuración de retención de instantáneas**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Glue en [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Elija la **Base de datos** y las **Tablas**. En la lista de tablas, elija la tabla de Iceberg en la que quiera actualizar la configuración del optimizador de retención de instantáneas.

1. En la sección inferior de la página **Detalles de las tablas**, seleccione la pestaña **Optimización de la tabla** y, a continuación, elija **Editar**. También puede seleccionar **Editar** en **Optimización** en el menú **Acciones** ubicado en la esquina superior derecha de la página.

1.  En la página **Editar optimización**, realice los cambios que desee. 

1.  Seleccione **Save**. 

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

 Puede usar el siguiente comando para la actualización del optimizador de retención de instantáneas mediante la AWS CLI: 

```
aws glue update-table-optimizer \
 --catalog-id 123456789012 \
 --database-name iceberg_db \
 --table-name iceberg_table \
 --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role"","enabled":'true', "vpcConfiguration":{"glueConnectionName":"glue_connection_name"},"retentionConfiguration":{"icebergConfiguration":{"snapshotRetentionPeriodInDays":7,"numberOfSnapshotsToRetain":3,"cleanExpiredFiles":'true'}}}' \
 --type retention
```

 Este comando actualiza la configuración de retención para la tabla especificada en el catálogo, la base de datos y la región indicados. Los parámetros clave son: 
+  snapshotRetentionPeriodInDays: número de días que se deben retener las instantáneas antes de provocar que caduquen. El valor predeterminado es `1`. 
+ numberOfSnapshotsToRetain: número mínimo de instantáneas que se deben retener, incluso si son anteriores al periodo de retención. El valor predeterminado es `5`. 
+ cleanExpiredFiles: valor booleano que indica si se deben eliminar los archivos de datos caducados después de que las instantáneas hayan caducado. El valor predeterminado es `true`. 

   Si se establece en verdadero, las instantáneas más antiguas se eliminan de los metadatos de la tabla, así como sus archivos subyacentes. Si este parámetro se establece en falso, las instantáneas más antiguas se eliminan de los metadatos de la tabla, pero sus archivos subyacentes permanecen en el almacenamiento como archivos huérfanos. 

------
#### [ API ]

Para actualizar un optimizador de tablas, puede usar la API `UpdateTableOptimizer`. Esta API le permite actualizar la configuración de un optimizador de tablas existente para compactar, retener o eliminar archivos huérfanos. Los parámetros de la solicitud incluyen:
+ catalogId (obligatorio): ID del catálogo que contiene la tabla. 
+  databaseName (opcional): nombre de la base de datos que contiene la tabla. 
+  tableName (opcional): nombre de la tabla. 
+  type (obligatorio): tipo de optimizador de tablas (compaction, retention o orphan\$1file\$1deletion). 
+  retentionConfiguration (obligatorio): configuración actualizada del optimizador de tablas, que incluye el ARN del rol, el estado habilitado, la configuración de retención y la configuración de eliminación de archivos huérfanos. 

------

# Deshabilitación del optimizador de retención de instantáneas
<a name="disable-snapshot-retention"></a>

 Puede deshabilitar el optimizador de retención de instantáneas de una tabla Apache Iceberg concreta mediante la consola de AWS Glue o la AWS CLI. 

------
#### [ Console ]

**Deshabilitación de la retención de instantáneas**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Glue en [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Elija la **Base de datos** y las **Tablas**. En la lista de tablas, elija la tabla de Iceberg en la que quiera deshabilitar el optimizador de retención de instantáneas.

1. En la sección inferior de la página **Detalles de la tabla**, seleccione **Optimización de la tabla** y **Desactivar**, **Retención de instantáneas** en **Acciones**.

   También puede seleccionar **Desactivar** en **Optimización** en el menú **Acciones** ubicado en la esquina superior derecha de la página.

1.  Seleccione **Deshabilitar** en el mensaje de confirmación. Puede volver a habilitar el optimizador de retención de instantáneas en otro momento. 

    Tras la confirmación, el optimizador de retención de instantáneas se deshabilita y el estado de retención de instantáneas vuelve a ser `Not enabled`.

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

En el siguiente ejemplo, reemplace el ID de cuenta con un ID de AWS válido. Sustituya el nombre de la base de datos y el nombre de la tabla por el nombre real de la tabla de Iceberg y el nombre de la base de datos. Sustituya `roleArn` por el nombre de recurso de AWS (ARN) del rol de IAM y el nombre real del rol de IAM que tiene los permisos necesarios para ejecutar el optimizador de retención.

```
aws glue update-table-optimizer \
  --catalog-id 123456789012 \
  --database-name iceberg_db \
  --table-name iceberg_table \
  --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role", "vpcConfiguration":{"glueConnectionName":"glue_connection_name"}, "enabled":'false'}'\ 
  --type retention
```

------
#### [ AWS API ]

Llame a la operación [UpdateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-UpdateTableOptimizer) para deshabilitar el optimizador de retención de instantáneas de una tabla específica.

------

# Eliminación de archivos huérfanos
<a name="orphan-file-deletion"></a>

 AWS Glue Data Catalog le permite eliminar archivos huérfanos de sus tablas de Iceberg. Los archivos huérfanos son archivos sin referencias que existen en su origen de datos de Amazon S3 en la ubicación de la tabla especificada, que no están registrados en los metadatos de la tabla de Iceberg y que son más antiguos que el límite de edad que usted configuró. Con el tiempo, estos archivos huérfanos pueden acumularse debido a errores en operaciones como la compactación, la eliminación de particiones o la reescritura de tablas, y ocupan espacio de almacenamiento innecesario.

El optimizador de eliminación de archivos huérfanos de AWS Glue analiza los metadatos de la tabla y los archivos de datos reales, identifica los archivos huérfanos y los elimina para recuperar espacio de almacenamiento. El optimizador solo elimina los archivos creados después de la fecha de creación del optimizador que también cumplen los criterios de eliminación configurados. Los archivos creados antes de la fecha de creación del optimizador, o en la misma fecha, nunca se eliminan.

**Lógica de la eliminación de archivos huérfanos**

1. Verificación de la fecha: compara la fecha de creación del archivo con la fecha de creación del optimizador. Si la fecha de creación del archivo es anterior o igual a la fecha de creación del optimizador, se omite.

1. Verificación de la configuración del optimizador: si el archivo es más reciente que la fecha de creación del optimizador, lo compara con el límite de edad configurado. El optimizador elimina el archivo si coincide con los criterios de eliminación. Si no cumple los criterios, lo omite.

 Para iniciar la eliminación de archivos huérfanos, cree un optimizador de tablas de eliminación de archivos huérfanos en el Catálogo de datos.

**importante**  
 De forma predeterminada, la eliminación de archivos huérfanos evalúa cada archivo en la ubicación de la tabla AWS Glue. Si bien puede configurar un subprefijo para limitar el alcance de la evaluación mediante el uso de un parámetro de API, asegúrese de que la ubicación de la tabla no contenga archivos de otros orígenes de datos o tablas. Si la ubicación de la tabla se superpone con otros orígenes de datos, es probable que el servicio identifique y elimine archivos que no estén relacionados como si fueran huérfanos. 

**Topics**
+ [Habilitación de la eliminación de archivos huérfanos](enable-orphan-file-deletion.md)
+ [Actualización del optimizador de eliminación de archivos huérfanos](update-orphan-file-deletion.md)
+ [Deshabilitación de la eliminación de archivos huérfanos](disable-orphan-file-deletion.md)

# Habilitación de la eliminación de archivos huérfanos
<a name="enable-orphan-file-deletion"></a>

 Puede usar la consola de AWS Glue, la AWS CLI o la API de AWS para habilitar la eliminación de archivos huérfanos de las tablas Apache Iceberg en el Catálogo de datos. Para las tablas nuevas, puede elegir Apache Iceberg como formato de tabla y habilitar el optimizador de eliminación de archivos huérfanos al crear la tabla. La retención de instantáneas está deshabilitada de forma predeterminada para las tablas nuevas.

------
#### [ Console ]

**Para habilitar la eliminación de archivos huérfanos**

1.  Abra la consola de AWS Glue en [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) e inicie sesión como administrador del lago de datos, creador de la tabla o usuario al que se le hayan concedido los permisos `glue:UpdateTable` y `lakeformation:GetDataAccess` de la tabla. 

1. En el panel de navegación, en **Catálogo de datos**, elija **Tablas**.

1. En la página **Tablas**, elija una tabla de Iceberg en la que quiera habilitar la eliminación de archivos huérfanos.

   Seleccione la pestaña **Optimización de la tabla** en la sección inferior de la página y seleccione **Activar**, **Eliminación de archivos huérfanos** en **Acciones**. 

   También puede seleccionar **Activar** en **Optimización** en el menú **Acciones** ubicado en la esquina superior derecha de la página.

1. En la página **Habilitar la optimización**, seleccione **Eliminación de archivos huérfanos** en **Opciones de optimización**.

1. Si elige usar **Configuración predeterminada**, todos los archivos huérfanos se eliminarán después de 3 días. Si desea conservar los archivos huérfanos durante un número específico de días, seleccione **Personalizar configuración**.

1. A continuación, elija un rol de IAM con los permisos necesarios para eliminar archivos huérfanos.

1. Si tiene configuraciones de políticas de seguridad en las que el optimizador de tablas de Iceberg necesita acceder a los buckets de Amazon S3 desde una nube privada virtual (VPC) específica, cree una conexión de red de AWS Glue o utilice una existente.

   Si aún no tiene configurada una conexión de VPC de AWS Glue, cree una nueva según los pasos de la sección [Creating connections for connectors](https://docs.aws.amazon.com/glue/latest/dg/creating-connections.html) mediante la consola de AWS Glue, la AWS CLI o los SDK.

1. Si elige **Personalizar configuración**, ingrese el número de días que se van a retener los archivos antes de eliminarlos en **Configuración de eliminación de archivos huérfanos**. También puede especificar el intervalo entre dos ejecuciones consecutivas del optimizador. El valor de predeterminado es 24 horas.

1. Seleccione **Habilitar la optimización**.

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

 Para habilitar la eliminación de archivos huérfanos en una tabla de Iceberg de AWS Glue, debe crear un optimizador de tablas de tipo `orphan_file_deletion` y establecer el campo `enabled` en verdadero. Para crear un optimizador de eliminación de archivos huérfanos para una tabla de Iceberg mediante la AWS CLI, puede utilizar el siguiente comando:

```
aws glue create-table-optimizer \
 --catalog-id 123456789012 \
 --database-name iceberg_db \
 --table-name iceberg_table \
 --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role","enabled":true, "vpcConfiguration":{
"glueConnectionName":"glue_connection_name"}, "orphanFileDeletionConfiguration":{"icebergConfiguration":{"orphanFileRetentionPeriodInDays":3, "location":'S3 location'}}}'\
 --type orphan_file_deletion
```

 Este comando crea un optimizador de eliminación de archivos huérfanos para la tabla de Iceberg especificada. Los parámetros clave son:
+ roleArn: ARN del rol de IAM con permisos para acceder al bucket de S3 y a los recursos de Glue.
+ enabled: se establece en verdadero para habilitar el optimizador.
+ orphanFileRetentionPeriodInDays: el número de días necesarios para retener los archivos huérfanos antes de eliminarlos (mínimo 1 día).
+ type: se establece en orphan\$1file\$1deletion para crear un optimizador de eliminación de archivos huérfanos.

 Tras crear el optimizador de tablas, eliminará los archivos huérfanos periódicamente (una vez al día si se deja habilitado). Puede comprobar las ejecuciones mediante la API `list-table-optimizer-runs`. El trabajo de eliminación de archivos huérfanos identificará y eliminará los archivos sin seguimiento en los metadatos de Iceberg de la tabla.

------
#### [ API ]

Llame a la operación [CreateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-CreateTableOptimizer) para crear el optimizador de eliminación de archivos huérfanos para una tabla específica.

------

# Actualización del optimizador de eliminación de archivos huérfanos
<a name="update-orphan-file-deletion"></a>

 Puede modificar la configuración del optimizador de eliminación de archivos huérfanos, por ejemplo, cambiando el periodo de retención de los archivos huérfanos o el rol de IAM utilizado por el optimizador mediante la consola de AWS Glue, la AWS CLI o la operación `UpdateTableOptimizer`. 

------
#### [ Consola de administración de AWS ]

**Actualización del optimizador de eliminación de archivos huérfanos**

1.  Elija la **Base de datos** y las **Tablas**. En la lista de tablas, elija la tabla en la que quiera actualizar la configuración del optimizador de eliminación de archivos huérfanos.

1. En la sección inferior de la página **Detalles de la tabla**, elija **Optimización de la tabla** y, a continuación, elija **Editar**. 

1.  En la página **Editar optimización**, realice los cambios que desee. 

1.  Seleccione **Save**. 

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

 Puede usar la llamada de `update-table-optimizer` para actualizar el optimizador de eliminación de archivos huérfanos en AWS Glue. Esto le permite modificar el parámetro `OrphanFileDeletionConfiguration` en el campo `icebergConfiguration` en el que puede especificar el parámetro `OrphanFileRetentionPeriodInDays` actualizado para establecer el número de días que se retendrán los archivos huérfanos y especificar la ubicación de la tabla de Iceberg desde la que se eliminarán los archivos huérfanos. 

```
aws glue update-table-optimizer \
 --catalog-id 123456789012 \
 --database-name iceberg_db \
 --table-name Iceberg_table \
 --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role","enabled":true, "vpcConfiguration":{"glueConnectionName":"glue_connection_name"},"orphanFileDeletionConfiguration":{"icebergConfiguration":{"orphanFileRetentionPeriodInDays":5}}}' \
 --type orphan_file_deletion
```

------
#### [ API ]

Llame a la operación [UpdateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-UpdateTableOptimizer) para actualizar el optimizador de eliminación de archivos huérfanos para una tabla.

------

 

# Deshabilitación de la eliminación de archivos huérfanos
<a name="disable-orphan-file-deletion"></a>

 Puede deshabilitar el optimizador de eliminación de archivos huérfanos de una tabla de Apache Iceberg concreta mediante la consola de AWS Glue o la AWS CLI. 

------
#### [ Console ]

**Deshabilitación de la eliminación de archivos huérfanos**

1. Elija la **Base de datos** y las **Tablas**. En la lista de tablas, elija la tabla de Iceberg en la que quiera deshabilitar el optimizador de eliminación de archivos huérfanos.

1. En la sección inferior de la página **Detalles de la tabla**, seleccione la pestaña **Optimización de la tabla**.

1. Seleccione **Acciones** y, a continuación, selecciona **Desactivar**, **Eliminar archivos huérfanos**.

   También puede seleccionar **Deshabilitar** en **Optimización** en el menú **Acciones**.

1.  Seleccione **Deshabilitar** en el mensaje de confirmación. Puede volver a habilitar el optimizador de eliminación de archivos huérfanos en otro momento. 

    Tras la confirmación, el optimizador de eliminación de archivos huérfanos se deshabilita y el estado de la eliminación de archivos huérfanos vuelve a ser `Not enabled`.

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

En el siguiente ejemplo, reemplace el ID de cuenta con un ID de AWS válido. Sustituya el nombre de la base de datos y el nombre de la tabla por el nombre real de la tabla de Iceberg y el nombre de la base de datos. Sustituya `roleArn` por el nombre de recurso de AWS (ARN) del rol de IAM y el nombre real del rol de IAM que tiene los permisos necesarios para deshabilitar el optimizador.

```
aws glue update-table-optimizer \
  --catalog-id 123456789012 \
  --database-name iceberg_db \
  --table-name iceberg_table \
  --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role", "enabled":'false'}'\ 
  --type orphan_file_deletion
```

------
#### [ API ]

Llame a la operación [UpdateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-UpdateTableOptimizer) para deshabilitar el optimizador de retención de instantáneas de una tabla específica.

------

# Visualización de los detalles de la optimización
<a name="view-optimization-status"></a>

Puede ver el estado de optimización de las tablas Apache Iceberg mediante la consola de AWS Glue, la AWS CLI o las operaciones de la API de AWS. 

------
#### [ Console ]

**Visualización del estado de optimización de las tablas de Iceberg (consola)**
+ Para ver el estado de optimización de las tablas de Iceberg en la consola de AWS Glue, seleccione una tabla de Iceberg de la lista **Tablas** del **Catálogo de datos**. En **Optimización de la tabla**. Elija la opción **Ver todo**  
![\[Página de detalles de la tabla de Apache Iceberg con la opción para habilitar la compactación.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/table-list-compaction-status.png)

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

Puede ver los detalles de la optimización mediante la AWS CLI.

En los siguientes ejemplos, sustituya el identificador de cuenta por un identificador de cuenta de AWS válido, el nombre de la base de datos y el nombre de la tabla por el nombre real de la tabla de Iceberg. Para `type`, proporcione un tipo de optimización. Los valores admitidos son `compaction`, `retention` y `orphan-file-deletion`.
+ **Obtención de los detalles de la última tanda de compactación de una tabla**

  ```
  aws get-table-optimizer \
    --catalog-id 123456789012 \
    --database-name iceberg_db \
    --table-name iceberg_table \
    --type compaction
  ```
+ Utilice el siguiente ejemplo para recuperar el historial de un optimizador de una tabla específica.

  ```
  aws list-table-optimizer-runs \
    --catalog-id 123456789012 \
    --database-name iceberg_db \
    --table-name iceberg_table \
    --type compaction
  ```
+ En el siguiente ejemplo se muestra cómo recuperar la ejecución de optimización y los detalles de configuración de varios optimizadores. Puede especificar un máximo de 20 optimizadores.

  ```
  aws glue batch-get-table-optimizer \
  --entries '[{"catalogId":"123456789012", "databaseName":"iceberg_db", "tableName":"iceberg_table", "type":"compaction"}]'
  ```

------
#### [ API ]
+ Utilice la operación `GetTableOptimizer` para recuperar los detalles de la última ejecución de un optimizador. 
+  Utilice la operación `ListTableOptimizerRuns` para recuperar el historial de un optimizador determinado en una tabla específica. Puede especificar 20 optimizadores en una sola llamada a la API. 
+ Utilice la operación [BatchGetTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-BatchGetTableOptimizer) para recuperar los detalles de configuración de varios optimizadores de su cuenta. 

------

# Visualización de métricas de Amazon CloudWatch
<a name="view-optimization-metrics"></a>

 Tras ejecutar los optimizadores de tablas correctamente, el servicio crea métricas de Amazon CloudWatch sobre el rendimiento del trabajo de optimización. Puede ir a las **Métricas de CloudWatch** y elegir **Métricas**, **Todas las métricas**. Puede filtrar las métricas por el espacio de nombres específico (por ejemplo AWS Glue), el nombre de la tabla o el nombre de la base de datos.

 Para obtener más información, consulte [Ver métricas disponibles](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/viewing_metrics_with_cloudwatch.html) en la *Guía del usuario de Amazon CloudWatch*. 

****Compactación****
+ Número de bytes compactados 
+ Número de archivos compactados
+ Número de DPU asignadas a los trabajos 
+ Duración del trabajo (horas) 

****Retención de instantáneas****
+ Número de archivos de datos eliminados 
+ Número de archivos de manifiesto eliminados
+ Número de listas de manifiesto eliminadas 
+ Duración del trabajo (horas)

****Eliminación de archivos huérfanos****
+ Número de archivos huérfanos eliminados 
+ Duración del trabajo (horas) 

# Eliminar un optimizador
<a name="delete-optimizer"></a>

Puede eliminar un optimizador y los metadatos asociados a la tabla mediante AWS CLI o una operación de API de AWS.

Ejecute el siguiente comando de la AWS CLI para eliminar el historial de optimización de una tabla. Debe especificar el valor de `type` del optimizador junto con el ID del catálogo, el nombre de la base de datos y el nombre de la tabla. Los valores admitidos son `compaction`, `retention` y `orphan_file_deletion`.

```
aws glue delete-table-optimizer \
  --catalog-id 123456789012 \
  --database-name iceberg_db \
  --table-name iceberg_table \
  --type compaction
```

 Utilice la operación `DeleteTableOptimizer` para eliminar un optimizador de una tabla.

# Consideraciones y limitaciones
<a name="optimizer-notes"></a>

 En esta sección se incluyen aspectos que se deben tener en cuenta al utilizar optimizadores de tablas en el AWS Glue Data Catalog. 

## Durabilidad y exactitud
<a name="durability-correctness"></a>

**Ubicaciones de tablas en S3:**

Si varias tablas de AWS Glue Data Catalog comparten la misma ubicación en Amazon S3 y tienen optimizadores habilitados, el optimizador de retención de instantáneas o el de eliminación de archivos huérfanos de una tabla podría eliminar archivos que aún utiliza la otra tabla. Asegúrese de que cada tabla con optimizadores habilitados tenga una ubicación única en Amazon S3 que no se comparta con ninguna otra tabla, incluidas las tablas de distintas bases de datos.

**Expiración del ciclo de vida de S3:**

Las reglas de expiración del ciclo de vida de Amazon S3 pueden eliminar archivos de manifiesto y de datos de tablas de Iceberg que aún están en uso por instantáneas activas. Si el bucket tiene reglas de expiración del ciclo de vida, asegúrese de excluir la ruta de almacenamiento de la tabla de Iceberg.

## Formatos compatibles y limitaciones de la compactación de datos administrada
<a name="compaction-notes"></a>

La compactación de datos admite una variedad de tipos de datos y formatos de compresión para leer y escribir datos, incluida la lectura de datos de tablas cifradas.

**Control de simultaneidad:**

 Apache Iceberg es compatible con un control de simultaneidad optimista, lo que permite que varias escrituras realicen operaciones simultáneamente. Los conflictos se detectan y resuelven en el momento de la confirmación. Cuando trabaje con canalizaciones de flujo, configure los ajustes de reintento adecuados mediante las propiedades de la tabla y los ajustes de compactación para gestionar las escrituras simultáneas de forma eficaz. Para obtener orientación detallada, consulte el blog de Big Data de AWS sobre la [administración de escrituras simultáneas en tablas de Iceberg](https://aws.amazon.com/blogs/big-data/manage-concurrent-write-conflicts-in-apache-iceberg-on-the-aws-glue-data-catalog/). 

**Reintentos de compactación:**

 Cuando las operaciones de compactación fallan cuatro veces consecutivas, la optimización de la tabla de catálogo de AWS Glue suspende automáticamente el optimizador para evitar un consumo innecesario de recursos de computación. Primero, investigue los registros e intente comprender la causa de la falla repetida de la compactación. Para reanudar la optimización de la compactación, puede volver a habilitar el optimizador a través de la API o la consola de AWS Glue. 

 **La compactación de datos admite:**
+ **Cifrado**: La compactación de datos solo admite el cifrado Amazon S3 (SSE-S3) y el cifrado KMS del lado del servidor (SSE-KMS)
+ **Estrategias de compactación**: binpack, clasificación y ordenación Z-order
+ Puede ejecutar la compactación desde la cuenta en la que reside el catálogo de datos cuando el bucket de Amazon S3 que almacena los datos subyacentes esté en otra cuenta. Para ello, el rol de compactación requiere acceso al bucket de Amazon S3.

 **La compactación de datos actualmente no admite:** 
+ **Compactación en tablas con varias cuentas**: No se puede ejecutar la compactación en tablas con varias cuentas
+ **Compactación en tablas de varias regiones**: No se puede ejecutar la compactación en tablas de varias regiones
+ **Habilitar la compactación en los enlaces de recursos**
+ **Tablas en la clase de almacenamiento Amazon S3 Express One Zone**: no se puede ejecutar la compactación en tablas de Iceberg en Amazon S3 Express One Zone. 
+ **La estrategia de compactación por ordenamiento en Z no admite los siguientes tipos de datos :**
  + Decimal
  + TimestampWithoutZone

## Consideraciones sobre los optimizadores de retención de instantáneas y eliminación de archivos huérfanos
<a name="retention-notes"></a>

Las siguientes consideraciones se aplican a los optimizadores de retención de instantáneas y de eliminación de archivos huérfanos. 
+ Los procesos de retención de instantáneas y eliminación de archivos huérfanos tienen un límite máximo de eliminación de 1 000 000 de archivos por ejecución. Al eliminar las instantáneas caducadas, si el número de archivos aptos para su eliminación supera 1 000 000, los archivos restantes que superen ese umbral seguirán existiendo en el almacenamiento de tablas como archivos huérfanos. 
+ El optimizador de retención de instantáneas conservará las instantáneas solo cuando se cumplan ambos criterios: el número mínimo de instantáneas que se deben conservar y el periodo de retención especificado.
+ El optimizador de retención de instantáneas elimina los metadatos de las instantáneas caducadas de Apache Iceberg, lo que evita que las consultas sobre las instantáneas caducadas viajen en el tiempo y, de forma opcional, elimina los archivos de datos asociados.
+  El optimizador de eliminación de archivos huérfanos elimina los archivos de datos y metadatos huérfanos a los que los metadatos de Iceberg ya no hacen referencia si su momento de creación es anterior al periodo de retención de la eliminación de archivos huérfanos desde el momento en que se ejecuta el optimizador.
+ Apache Iceberg facilita el control de versiones mediante ramas y etiquetas, denominadas punteros para estados de instantáneas específicos. Cada rama y etiqueta sigue su propio ciclo de vida independiente, regido por las políticas de retención definidas en sus niveles respectivos. Los optimizadores de AWS Glue Data Catalog tienen en cuenta estas políticas de ciclo de vida, lo que garantiza el cumplimiento de las reglas de retención especificadas. Las políticas de retención de rama y etiqueta tienen prioridad sobre las configuraciones del optimizador. 

   Para obtener más información, consulte la sección [Branching and Tagging](https://iceberg.apache.org/docs/nightly/branching/) de la documentación de Apache Iceberg. 
+ Los optimizadores de retención de instantáneas y de eliminación de archivos huérfanos eliminarán los archivos que puedan limpiarse según los parámetros configurados. Mejore su control sobre la eliminación de archivos mediante la implementación de políticas de control de versiones y ciclo de vida de S3 en los buckets correspondientes.

   Para obtener instrucciones detalladas sobre cómo configurar el control de versiones y crear reglas de ciclo de vida, consulte [https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html). 
+  Para determinar correctamente los archivos huérfanos, asegúrese de que la ubicación de la tabla proporcionada y las subrutas no se superpongan ni contengan datos de ninguna otra tabla u origen de datos. Si las rutas se superponen, corre el riesgo de sufrir una pérdida de datos irrecuperable debido a la eliminación no intencionada de archivos. 

## Depuración de la excepción OversizedAllocationException
<a name="debug-exception"></a>

Para resolver una excepción `OversizedAllocationException`:
+ Reduzca el tamaño del lote del lector vectorizado y compruébelo. El tamaño predeterminado del lote es de 5000. Esto se controla en `read.parquet.vectorization.batch-size`.
  + Si esto no funciona incluso después de varias variaciones, desactive la vectorización. Esto se controla en `read.parquet.vectorization.enabled`.

# Regiones compatibles con los optimizadores de tablas
<a name="regions-optimizers"></a>

Las funciones de optimización de tablas (compactación, retención de instantáneas y eliminación de archivos huérfanos) para AWS Glue Data Catalog están disponibles en las siguientes Regiones de AWS:
+ Asia-Pacífico (Tokio)
+ Asia-Pacífico (Seúl)
+ Asia-Pacífico (Mumbai)
+ Asia-Pacífico (Singapur)
+ Asia-Pacífico (Sídney)
+ Asia-Pacífico (Yakarta)
+ Canadá (centro)
+ Europa (Irlanda)
+ Europa (Londres)
+ Europa (Fráncfort)
+ Europa (Estocolmo)
+ Este de EE. UU. (Norte de Virginia)
+ Este de EE. UU. (Ohio)
+ Oeste de EE. UU. (Oregón)
+ América del Sur (São Paulo)

# Optimización del rendimiento de las consultas en tablas de Iceberg
<a name="iceberg-column-statistics"></a>

Apache Iceberg es un formato de tabla abierto de alto rendimiento para conjuntos de datos de análisis de gran tamaño. AWS Glue permite calcular y actualizar el número de valores distintos (NDV) para cada columna de las tablas de Iceberg. Estas estadísticas pueden facilitar una mejor optimización de las consultas, administración de los datos y eficiencia del rendimiento para los ingenieros y científicos de datos que trabajan con conjuntos de datos a gran escala.

 AWS Glue calcula el número de valores distintos de cada columna de la tabla de Iceberg y los almacena en archivos [Puffin](https://iceberg.apache.org/puffin-spec/) de Amazon S3 asociados a las instantáneas de la tabla de Iceberg. Puffin es un formato de archivo de Iceberg diseñado para almacenar metadatos como índices, estadísticas y bocetos. El almacenamiento de bocetos en archivos Puffin vinculados a instantáneas garantiza la coherencia de las transacciones y la actualización de las estadísticas de NDV.

Puede configurarlo para ejecutar la tarea de generación de estadísticas de columnas mediante la consola AWS Glue o AWS CLI. Al iniciar el proceso, AWS Glue inicia un trabajo de Spark en segundo plano y actualiza los metadatos de la tabla AWS Glue en el catálogo de datos. Puede ver las estadísticas de las columnas mediante la consola AWS Glue o AWS CLI, o llamando a la operación de la API [GetColumnStatisticsForTable](https://docs.aws.amazon.com/glue/latest/webapi/API_GetColumnStatisticsForTable.html).

**nota**  
Si utiliza los permisos de AWS Lake Formation para controlar el acceso a la tabla, el rol que asume la tarea de estadísticas de columnas requiere acceso total a la tabla para generar estadísticas.

**Topics**
+ [Requisitos previos para generar estadísticas de columnas](iceberg-column-stats-prereqs.md)
+ [Generación de estadísticas de las columnas de las tablas de Iceberg](iceberg-generate-column-stats.md)
+ [Véase también](#see-also-iceberg-stats)

# Requisitos previos para generar estadísticas de columnas
<a name="iceberg-column-stats-prereqs"></a>

Para generar o actualizar las estadísticas de las columnas de tablas de Iceberg, la tarea de generación de estadísticas adopta un rol de AWS Identity and Access Management (IAM) en su nombre. Según los permisos concedidos al rol, la tarea de generación de estadísticas de columnas puede leer los datos del almacén de datos de Amazon S3.

Al configurar la tarea de generación de estadísticas de la columna, AWS Glue le permite crear un rol que incluye la política administrada de AWS `AWSGlueServiceRole`, más la política insertada necesaria para el origen de datos especificado. 

Si especifica un rol existente para generar estadísticas de las columnas, asegúrese de que incluya la política `AWSGlueServiceRole` o equivalente (o una versión reducida de esta política), además de las políticas insertadas requeridas.

Para obtener más información sobre los permisos fr necesarios, consulte . [Requisitos previos para generar estadísticas de columnas](column-stats-prereqs.md). 

# Generación de estadísticas de las columnas de las tablas de Iceberg
<a name="iceberg-generate-column-stats"></a>

Siga estos pasos para configurar una programación para generar estadísticas en el Catálogo de datos mediante la consola de AWS Glue o la AWS CLI, o ejecute la operación **StartColumnStatisticsTaskRun**.

**Generación de estadísticas de columnas**

1. Inicie sesión en la consola de AWS Glue en [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/). 

1. Seleccione **Tablas** en el Catálogo de datos.

1. Seleccione una tabla de Iceberg de la lista. 

1. Seleccione **Generar estadísticas**, **Generar bajo demanda** en el menú **Acciones**.

   También puede pulsar el botón **Generar estadísticas** en la pestaña **Estadísticas de columnas**, en la sección inferior de la página de **Tablas**.

1. En la página **Generar estadísticas**, proporcione los detalles de generación de estadísticas. Siga los pasos 6 a 11 de la sección [Generación de estadísticas de columnas según una programación](generate-column-stats.md) a fin de configurar una programación para la generación de estadísticas de las tablas de Iceberg. 

   También puede optar por generar estadísticas de columnas bajo demanda si sigue las instrucciones en [Generación de estadísticas de columnas bajo demanda](column-stats-on-demand.md)
**nota**  
La opción de muestreo no está disponible para las tablas de Iceberg.

   AWS Glue calcula el número de valores distintos de cada columna de la tabla de Iceberg en un nuevo archivo Puffin asignado al ID de instantánea especificado en la ubicación de su instancia de Amazon S3.

## Véase también
<a name="see-also-iceberg-stats"></a>
+ [Visualización de estadísticas de columnas](view-column-stats.md)
+ [Visualización de las ejecuciones de tareas de estadísticas de columnas](view-stats-run.md)
+ [Detener la ejecución de la tarea de estadísticas de columnas](stop-stats-run.md)
+ [Eliminar estadísticas de columnas](delete-column-stats.md)