

# 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.