Compartir a través de


OPTIMIZE

Se aplica a:casilla marcada como Sí Databricks SQL casilla marcada como Sí Databricks Runtime

Optimiza el diseño de los datos de Delta Lake. Si lo desea, optimice un subconjunto de datos o coloque los datos por columna. Si no especifica la colocación y la tabla no está definida con la agrupación en clústeres líquidos, se realiza la optimización de empaquetado de contenedores.

Sintaxis

OPTIMIZE table_name [FULL] [WHERE predicate]
  [ZORDER BY (col_name1 [, ...] ) ]

Nota:

  • La optimización del empaquetado en contenedores es idempotente, lo que significa que si se ejecuta dos veces en el mismo conjunto de datos, la segunda ejecución no tiene ningún efecto. Su objetivo es generar archivos de datos equilibrados uniformemente con respecto a su tamaño en el disco, pero no necesariamente con respecto al número de tuplas por archivo. Sin embargo, las dos medidas a menudo están correlacionadas.
  • La ordenación Z no es idempotente, sino que pretende ser una operación incremental. No se garantiza el tiempo que tarde la ordenación Z en reducirse en varias ejecuciones. Pero si no se han agregado datos nuevos a una partición en la que se acaba de aplicar la ordenación Z, otra ordenación de este tipo de esa partición no tendrá ningún efecto. Su objetivo es generar archivos de datos equilibrados uniformemente con respecto al número de tuplas, pero no necesariamente con respecto al tamaño de los datos en el disco. Las dos medidas suelen estar correlacionadas, pero puede haber situaciones en las que no sea así, lo que conduce a un sesgo en la optimización de los tiempos de las tareas.

Nota:

Al usar Databricks Runtime, para controlar el tamaño del archivo de salida, establezca la configuración de Spark spark.databricks.delta.optimize.maxFileSize. El valor predeterminado es 1073741824, que establece el tamaño en 1 GB. Al especificar el valor 104857600, el tamaño del archivo se establece en 100 MB.

Parámetros

  • table_name

    Identifica una tabla de Delta existente. El nombre no debe incluir una especificación temporal ni una especificación de opciones.

  • FULL

    Se aplica a: casilla marcada como Sí Databricks Runtime 16.0 y versiones posteriores

    Optimice toda la tabla, incluidos los datos que pueden haberse agrupado previamente. Esta cláusula solo se puede especificar para las tablas que usan la agrupación en clústeres líquidos.

  • WHERE

    Optimiza el subconjunto de filas que coinciden con el predicado de la partición especificado. Solo se admiten los filtros que implican atributos clave de la partición.

    No puede usar esta cláusula en tablas que usan la agrupación en clústeres líquidos.

  • ZORDER BY

    Coloque la información de las columnas en el mismo conjunto de archivos. Los algoritmos de omisión de datos de Delta Lake usan la coubicación para reducir drásticamente la cantidad de datos que se deben leer. Puede especificar varias columnas para ZORDER BY como una lista separada por comas. Sin embargo, la eficacia de la localidad disminuye con cada columna adicional.

    No puede usar esta cláusula en tablas que usan la agrupación en clústeres líquidos.

Ejemplos

> OPTIMIZE events;

> OPTIMZIE events FULL;

> OPTIMIZE events WHERE date >= '2017-01-01';

> OPTIMIZE events
    WHERE date >= current_timestamp() - INTERVAL 1 day
    ZORDER BY (eventType);

Para obtener más información sobre el comando OPTIMIZE, consulte Optimizar el diseño de archivos de datos.