Compartir a través de


Combinación de orden aleatorio bajo en Azure Databricks

Nota

Está disponible con carácter general (GA) en Databricks Runtime 10.4 LTS y versiones posteriores y en versión preliminar pública en Databricks Runtime 9.1 LTS. Databricks recomienda que los clientes en versión preliminar migren a Databricks Runtime 10.4 LTS o superior.

El comando MERGE se usa para realizar actualizaciones simultáneas, inserciones y eliminaciones de una tabla de Delta Lake. Azure Databricks tiene una implementación optimizada de MERGE que mejora considerablemente el rendimiento de las cargas de trabajo comunes al reducir el número de operaciones de intercambio.

La combinación de orden aleatorio bajo de Databricks proporciona un mejor rendimiento mediante el procesamiento de filas sin modificar en un modo de procesamiento independiente y más simplificado, en lugar de procesarlas junto con las filas modificadas. Como resultado, la cantidad de datos aleatorios se reduce significativamente, lo que conduce a un rendimiento mejorado. La combinación de orden aleatorio bajo también reduce la necesidad de que los usuarios vuelvan a ejecutar el comando OPTIMIZE ZORDER BY después de realizar una operación MERGE.

Rendimiento optimizado

Muchas cargas de trabajo MERGE solo actualizan una cantidad relativamente pequeña de filas en una tabla. Sin embargo, las tablas Delta solo se pueden actualizar por archivo. Cuando el comando MERGE necesita actualizar o eliminar un pequeño número de filas almacenadas en un archivo determinado, también debe procesar y volver a escribir todas las filas restantes almacenadas en el mismo archivo, aunque estas filas no estén modificadas. La combinación de orden aleatorio bajo optimiza el procesamiento de las filas sin modificar. Anteriormente, se procesaban igual que las filas modificadas, pasándolas por varias fases de reordenamiento y cálculos costosos. En la combinación de orden aleatorio bajo, las filas sin modificar se procesan sin órdenes aleatorios, procesamientos costosos ni ninguna otra sobrecarga adicional.

Diseño de datos optimizado

Además de ejecutarse con mayor rapidez, la combinación de orden aleatorio bajo también beneficia a las operaciones posteriores. La implementación anterior de MERGE hizo que el diseño de datos de los datos no modificados se cambiara completamente, lo que provocaba un menor rendimiento en las operaciones posteriores. La combinación de orden aleatorio bajo intenta conservar el diseño de datos existente de los registros sin modificar, incluida la optimización de ordenación Z en función de la mejor opción. Por lo tanto, con la combinación de orden aleatorio bajo, el rendimiento de las operaciones en una tabla de Delta se degradará de manera más lenta después de ejecutar uno o varios comandos MERGE.

Nota

La combinación de orden aleatorio bajo solo conservará el diseño de los datos existentes que no se modifiquen. Es posible que el diseño de datos de los datos actualizados o recién insertados no sea óptimo, por lo que puede ser necesario ejecutar los comandos OPTIMIZE o OPTIMIZE ZORDER BY.

Disponibilidad

La combinación de orden aleatorio bajo está habilitada de manera predeterminada en Databricks Runtime 10.4 y versiones posteriores. En versiones anteriores admitidas de Databricks Runtime, se puede habilitar estableciendo la configuración spark.databricks.delta.merge.enableLowShuffle en true. Esta marca no tiene ningún efecto en Databricks Runtime 10.4 y versiones posteriores.