Combinación de orden aleatorio bajo en Azure Databricks

Nota:

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

El comando MERGE se usa para realizar actualizaciones, inserciones y eliminaciones simultáneas 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 aleatorias.

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 da lugar 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 de MERGE solo actualizan un número relativamente pequeño de filas de 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 reescribir todas las filas restantes almacenadas en el mismo archivo, aunque estas filas no se modifiquen. La combinación de orden aleatorio bajo optimiza el procesamiento de las filas sin modificar. Anteriormente, se procesaban de la misma manera que las filas modificadas y pasaban por varias fases aleatorias 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 hacía que el diseño de los datos sin modificar se cambiara por completo, 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 los datos actualizados o recién insertados no sea óptimo, por lo que puede que sea necesario ejecutar los comandos OPTIMIZE u 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.