Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:
Databricks SQL
Databricks Runtime
En esta página se describe el OPTIMIZE comando , que optimiza el diseño de los datos de Delta Lake. Puede optimizar un subconjunto de datos o colocar datos por columna. Si no especifica la intercalación y la tabla no usa la agrupación en clústeres líquidos, Delta Lake realiza la optimización del empaquetado de contenedores.
Sintaxis
OPTIMIZE table_name [FULL] [WHERE predicate]
[ZORDER BY (col_name1 [, ...] ) ]
Nota:
La optimización de empaquetado bin es idempotente: si la ejecuta dos veces en el mismo conjunto de datos, la segunda ejecución no tiene ningún efecto. Genera archivos de datos uniformemente equilibrados con respecto a su tamaño en el disco, pero no necesariamente el número de tuplas por archivo. Las dos medidas se correlacionan con más frecuencia.
Z-Ordering no es idempotente, pero funciona incrementalmente. No se garantiza que el tiempo que tarda Z-Ordering disminuya en varias ejecuciones. Sin embargo, si no se agregaron nuevos datos a una partición que era simplemente Z-Ordering, la ejecución de Z-Ordering de nuevo en esa partición no tiene ningún efecto. El orden Z genera archivos de datos uniformemente equilibrados con respecto al número de tuplas, pero no necesariamente el tamaño de los datos en el disco. Las dos medidas se correlacionan con más frecuencia, pero la asimetría en los tiempos de tarea de optimización puede producirse cuando difieren.
Nota:
Al usar Databricks Runtime, para controlar el tamaño del archivo de salida, establezca la configuraciónspark.databricks.delta.optimize.maxFileSize de Spark. El valor predeterminado es 1073741824 (1 GB). Especificar 104857600 establece el tamaño del archivo en 100 MB.
Parámetros
-
Identifica una tabla de Delta existente. El nombre no debe incluir una especificación temporal ni una especificación de opciones.
FULLSe aplica a:
Databricks Runtime 16.0 y versiones posterioresVuelve a escribir todos los archivos de datos de la tabla. Use
OPTIMIZE table_name FULLpara:- Optimice toda la tabla, incluidos los datos agrupados anteriormente (para tablas que usan la agrupación en clústeres líquidos).
- Vuelva a comprimir los archivos de datos existentes al cambiar el códec de compresión de la tabla mediante la
delta.parquet.compression.codecpropiedad .
Para volver a comprimir los datos existentes después de cambiar el códec de compresión, ejecute
OPTIMIZE table_name FULL:-- Change compression codec ALTER TABLE table_name SET TBLPROPERTIES ('delta.parquet.compression.codec' = 'ZSTD'); -- Recompress all existing data files OPTIMIZE table_name FULL;Para optimizar un subconjunto de archivos de una tabla con la agrupación en clústeres líquidos habilitada, combine
FULLcon unWHEREpredicado (Databricks Runtime 18.1 y versiones posteriores). Solo se admiten predicados de intervalo simple en una sola columna de agrupación en clústeres. Se incluye un archivo si alguna parte de su intervalo se superpone con el predicado. Por ejemplo,OPTIMIZE events FULL WHERE date > 15incluye un archivo con intervalo(col_min = 10, col_max = 20)porque el intervalo del archivo se superpone con el predicado.WHEREOptimiza el subconjunto de filas que coinciden con un predicado de partición o agrupación en clústeres. Solo se admiten filtros en atributos clave de partición o agrupación en clústeres.
En el caso de las tablas que usan clústeres líquidos, use
OPTIMIZE table_name FULL WHERE predicate(Databricks Runtime 18.1 y versiones posteriores) en su lugar.ZORDER BYNota:
Databricks recomienda la agrupación en clústeres líquidos para todas las tablas nuevas en lugar de ordenar Z. Consulte Uso de clústeres líquidos para tablas.
Coloca la información de columna en el mismo conjunto de archivos. Los algoritmos de omisión de datos de Delta Lake usan la colocalización para reducir la cantidad de datos que se deben leer. Puede especificar varias columnas como una lista separada por comas, pero la eficacia de la colocalización disminuye con cada columna adicional.
No puede usar esta cláusula en tablas que usan clústeres líquidos.
Ejemplos
> OPTIMIZE events;
> OPTIMIZE events FULL;
> -- Partitioned table
> OPTIMIZE events WHERE date >= '2017-01-01';
> -- Table with liquid clustering enabled (DBR 18.1 and above)
> OPTIMIZE events FULL WHERE date >= '2025-01-01';
> OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType);
Para obtener más información, consulte Optimización del diseño del archivo de datos.