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.
Las consultas lentas y los altos costes de cálculo suelen deberse a unas pocas causas raíz: leer más datos de los que necesita una consulta, barajar datos entre nodos, elegir un plan de consulta pobre o reescribir archivos que no han cambiado. Azure Databricks aborda muchas de estas causas automáticamente en cargas de trabajo que van desde el procesamiento ETL a gran escala hasta consultas ad hoc e interactivas. Otras optimizaciones solo se aplican cuando las activas o las ajustas para una carga de trabajo específica.
Esta página comienza con recomendaciones para la mayoría de las cargas de trabajo, luego agrupa las optimizaciones según si se ejecutan automáticamente o requieren que las configures, y describe el problema que resuelve cada una. La mayoría de las optimizaciones en tiempo de ejecución de Databricks requieren Delta Lake, el formato predeterminado para tablas en Azure Databricks.
Empieza con estas recomendaciones
Estas opciones ofrecen las mayores mejoras de rendimiento para la mayoría de las cargas de trabajo. También ayudan a que muchas de las optimizaciones automáticas de esta página funcionen al máximo.
-
Utiliza agrupamiento líquido para la disposición de tablas.El clustering líquido reemplaza la partición de tablas y
ZORDER. Organiza los datos por las columnas por las que filtra con frecuencia, lo que mejora la omisión de datos y la eliminación dinámica de archivos. - Utiliza tablas gestionadas de Unity Catalog.La optimización predictiva mantiene las tablas gestionadas automáticamente. Consulte las tablas gestionadas de Unity Catalog para Delta Lake y Apache Iceberg.
- Use proceso habilitado para Photon. La E/S predictiva requiere Photon, al igual que la eliminación dinámica de archivos en las instrucciones
MERGE,UPDATEyDELETE. Consulte ¿Qué es Photon? - Habilitar vectores de borrado. La E/S predictiva usa vectores de eliminación para evitar reescribir archivos completos durante las actualizaciones, eliminaciones y combinaciones, y la simultaneidad de nivel de fila los requiere. Para las tablas Delta Lake, debes habilitar explícitamente los vectores de borrado. Consulte Vectores de eliminación en Databricks.
- Utiliza el último Databricks Runtime. Las nuevas versiones incluyen las mejoras de rendimiento más recientes. Algunas optimizaciones requieren una versión mínima de Databricks Runtime o recursos informáticos habilitados para Photon. Consulta cada página para los requisitos.
Optimizaciones automáticas
Estas optimizaciones están activadas por defecto. No es necesario habilitarlas, pero algunas ofrecen más ventajas cuando las tablas y el proceso cumplen determinadas condiciones, como usar Photon o mantener actualizadas las estadísticas de tabla.
- Caché de disco: Acelera las consultas que leen repetidamente los mismos archivos de datos remotos de Parquet y Delta Lake. Azure Databricks almacena en caché copias de los archivos en el almacenamiento local de los nodos de cómputo para que las lecturas posteriores se ejecuten localmente. Azure Databricks lo activa automáticamente en tipos de instancias de trabajadores que lo soportan.
-
Poda dinámica de archivos: Salta archivos que no pueden contener filas coincidentes en uniones en tablas Delta Lake. Las instrucciones
MERGE,UPDATEyDELETErequieren proceso habilitado para Photon para la eliminación dinámica de archivos. -
Combinación con orden aleatorio bajo: acelera las operaciones
MERGEque actualizan o eliminan unas pocas filas de cada archivo. La combinación con orden aleatorio bajo procesa las filas no modificadas sin un orden aleatorio y conserva su diseño de datos existente. - Ejecución adaptativa de consultas: Reoptimiza los planes de consulta mientras las consultas se ejecutan, basándose en el tamaño real de los datos. Esto corrige las estrategias de combinación lentas, el exceso de tareas pequeñas y las tareas sesgadas que se deben a estimaciones inexactas.
- E/S predictiva: Acelera los escaneos de datos y reduce los datos reescritos durante las actualizaciones, eliminaciones y fusiones en entornos de cómputo con Photon habilitado.
- Optimizador basado en costes: usa estadísticas de tablas y columnas para elegir planes de consulta eficientes, especialmente para consultas con varias combinaciones. El optimizador basado en costes depende de las estadísticas, así que recóllalas y mantenlas actualizadas.
-
Optimización predictiva: Ejecuta
OPTIMIZE,VACUUMyANALYZEen las tablas administradas de Unity Catalog automáticamente, así que no necesitas programar el mantenimiento de tablas. También mantiene actualizadas las estadísticas que utiliza el optimizador basado en costes. Para comprobar si está activado para tu cuenta, consulta Verificar si la optimización predictiva está activada.
Optimizaciones que configure
Estas optimizaciones requieren que las actives, las ajustes o cambies la configuración de la tabla. Úsalos cuando una carga de trabajo necesite un comportamiento que los valores predeterminados no cubren.
- Compatibilidad con archivado: úsela cuando las directivas de ciclo de vida en la nube muevan archivos de tablas antiguos a niveles de almacenamiento de archivo para reducir los costes de almacenamiento. La compatibilidad con archivado indica a Azure Databricks que omita los archivos anteriores a un período especificado, de modo que la directiva de ciclo de vida no interrumpa las consultas que solo leen datos recientes. Esta característica está en la versión preliminar pública.
- Join de rango: Úselo cuando los joins usen una condición de punto en intervalo o de solapamiento de intervalos. Databricks SQL optimiza automáticamente los joins de rango. En otros procesos, ajuste las combinaciones de intervalos con sugerencias de combinación o con la configuración de la sesión.
- Niveles de aislamiento y conflictos de escritura: Úsalo cuando las escrituras concurrentes en la misma tabla conflictan, o cuando una carga de trabajo necesita garantías más estrictas que el nivel de aislamiento predeterminado de WriteSerializable. El aislamiento serializable reduce el rendimiento para escrituras concurrentes. La concurrencia a nivel de fila resuelve automáticamente muchos conflictos entre escrituras concurrentes en tablas que cumplen sus requisitos.
-
Índices de búsqueda de texto completo: Úselos cuando las consultas busquen en columnas de texto subcadenas o palabras con las funciones
searchoisearch. El índice omite archivos que no pueden contener filas coincidentes. Esta característica está en beta.
Nota:
Los índices de filtro de Bloom son una característica de omisión de datos en desuso. Añaden sobrecarga de escritura y son difíciles de ajustar. Si sus tablas los tienen, consulte Índices de filtro de Bloom (en desuso) para reemplazarlos y quitarlos.
Otras características de rendimiento
- Las funciones de orden superior tienen un rendimiento optimizado incorporado para muchas operaciones que no tienen operadores Spark comunes. Las funciones de orden superior funcionan mejor que las definidas por el usuario.
- Azure Databricks tiene operadores integrados y una sintaxis especial para trabajar con tipos de datos complejos, incluyendo arrays, structs y cadenas JSON.
- Spark SQL consulta cadenas JSON sin analizarlas primero.
- Para controlar el tamaño de los archivos de datos que generan las operaciones de escritura, véase Controlar el tamaño de los archivos de datos.
- Para orientación sobre diseño y mantenimiento de tablas, consulta Mejores prácticas: Delta Lake.
Diagnosticar cargas de trabajo lentas o de alto coste
Si la carga de trabajo es más lenta o más cara de lo esperado y no sabes por qué, usa la interfaz de Spark para encontrar el cuello de botella antes de cambiar la configuración. Consulta Diagnostica problemas de coste y rendimiento usando la interfaz de Spark.