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.
El comando MERGE de Delta Lake permite a los usuarios actualizar una tabla Delta con condiciones avanzadas. Puede actualizar datos de una tabla de origen, ver o DataFrame en una tabla de destino mediante el MERGE comando . Sin embargo, el algoritmo actual no está totalmente optimizado para controlar las filas sin modificar . Con la optimización de combinación aleatoria baja, las filas sin modificar se excluyen de una operación de orden aleatorio costosa que es necesaria para actualizar las filas coincidentes.
Note
La combinación de orden aleatorio baja está disponible y habilitada de forma predeterminada en todos los entornos de ejecución de Spark de Fabric para mejorar considerablemente el rendimiento de las operaciones de MERGE.
¿Por qué necesitamos una combinación de orden aleatorio baja?
Actualmente MERGE , la operación se realiza mediante dos ejecuciones de combinación. La primera combinación usa toda la tabla de destino y los datos de origen, para buscar una lista de archivos táctiles de la tabla de destino, incluidas las filas coincidentes. Después de eso, realiza la segunda combinación leyendo solo los archivos táctiles y los datos de origen, para realizar la actualización real de la tabla. Aunque la primera combinación es reducir la cantidad de datos de la segunda combinación, todavía podría haber un gran número de filas sin modificar en los archivos táctiles . La primera consulta de combinación es más ligera, ya que solo lee columnas en la condición de coincidencia especificada. La segunda para la actualización de tabla debe cargar todas las columnas, lo que supone un proceso de orden aleatorio costoso.
Con la optimización de combinación aleatoria baja, Delta mantiene el resultado de la fila coincidente de la primera combinación temporalmente y la utiliza para la segunda combinación. En función del resultado, excluye las filas sin modificar del proceso de orden aleatorio pesado. Habría dos trabajos de escritura independientes para las filas coincidentes y las filas sin modificar , por lo que podría dar lugar a un número 2x de archivos de salida en comparación con el comportamiento anterior. Sin embargo, la ganancia de rendimiento esperada supera el posible problema de archivos pequeños.
Ventajas de la combinación de orden aleatorio bajo
- Las filas no modificadas en los archivos táctiles se controlan por separado y no pasan por la operación MERGE real. Puede ahorrar el tiempo total de ejecución de MERGE y los recursos de proceso. La ganancia sería mayor cuando se copian muchas filas y solo se actualizan algunas filas.
- Las ordenaciones de fila se conservan para las filas sin modificar. Por lo tanto, los archivos de salida de filas sin modificar podrían ser eficaces para omitir datos si el archivo se ordenó o Z-ORDERED.
- Habría una sobrecarga pequeña incluso para el peor de los casos cuando la condición MERGE coincide con todas las filas de los archivos táctiles.
Cómo habilitar y deshabilitar la combinación de orden aleatorio bajo
La combinación aleatoria baja está habilitada de forma predeterminada como configuración de sesión de Spark: